Use two arrays, one for serin2 and one for seroutHow can I modify the above syntax to start loading from 9 to 19 & NOT 0 to 12?
For A0=0 to 11
SecondArray[A0+9]=FirstArray[A0]
next A0
Al.
Use two arrays, one for serin2 and one for seroutHow can I modify the above syntax to start loading from 9 to 19 & NOT 0 to 12?
For A0=0 to 11
SecondArray[A0+9]=FirstArray[A0]
next A0
Al.
All progress began with an idea
Hi Aratti
Here is a snapshot of what I have done till now:
num var byte[12]
sum var byte[21]
baud con 188
sum[0] = "A"
sum[1] = "T"
sum[2] = "+"
sum[3] = "C"
sum[4] = "M"
sum[5] = "G"
sum[6] = "S"
sum[7] = "="
sum[21]= 13
Serin2 rx,baud,5000,main,[WAIT("REC UNREAD"),SKIP 3, STR num\12, skip 28, STR sms\8]
checkms:
If sms[0]="d" and sms[1]="e" and sms[2]="a" and sms[3]="c" and sms[4]="t" then
For c=0 to 12
sum[c+8]=num[c]
next c
For c=0 to 21
serout tx,T2400,[sum[c]]
next c
Serin2 rx,baud,5000,checkms,[WAIT(">")]
This arrangement is not working. Can you advise me of whats wrong. Many thanks for your time in advance
In your code you use the byte variable "C" but I don't see it declared.
Did you include "MODEDEFS.BAS" in your code?
How long is your phone number? You have declared an array (num) of 12 bytes but the for/next loop is trying to use 13 bytes!Code:num var byte[12] For c=0 to 12 ' you will need 13 bytes here sum[c+8]=num[c] next c
Also the array sum is declared for 21 and you are attempting to use 22 (you have sum[21]= 13) This is an array of 22 bytes!
Remember that you have to count also the zero.
So adjust both the arrays as per the lenght of your phone number ( if 13 digits then you need 13 in the declaration and 13 in the string numerical. If on the contrary the phone lenght is 12 digits then modify the for/next loop to For c=0 to 11 and put byte array sum var byte[22]
Al.
Last edited by aratti; - 8th October 2009 at 00:18.
All progress began with an idea
Hi
My number length is +447832225144 (0-12)(or 13 if counted from 1)
I declared variable num var byte[12] because it can take my number from num[0]="+" to num[12]="4"
I also declared sum var byte[21] because :
sum[0]="A" and so on upto sum[7]="="
and further
sum[8]="+"
sum[9]="4"
sum[10]="4"
sum[11]="7"
sum[12]="8"
sum[13]="3"
sum[14]="2"
sum[15]="2"
sum[16]="2"
sum[17]="5"
sum[18]="1"
sum[19]="4"
sum[20]="4"
sum[21]=13
and to fill sum[8] to sum[20] we need loop 13 times (sum[8] included), and so c=0 to 12
Also while serout it needs to transmit whole sum[0] to sum[21] so c=0 to 21.
Do you still feel this is the wrong way? Thanks
The above (marked in red) are the correction needed.
Include "MODEDEFS.BAS"
num var byte[13]
sum var byte[22]
c var byte
baud con 188
sum[0] = "A"
sum[1] = "T"
sum[2] = "+"
sum[3] = "C"
sum[4] = "M"
sum[5] = "G"
sum[6] = "S"
sum[7] = "="
sum[21]= 13
Serin2 rx,baud,5000,main,[WAIT("REC UNREAD"),SKIP 3, STR num\13, skip 28, STR sms\8]
checkms:
If sms[0]="d" and sms[1]="e" and sms[2]="a" and sms[3]="c" and sms[4]="t" then
For c=0 to 12
sum[c+8]=num[c]
next c
For c=0 to 21
serout tx,T2400,[sum[c]]
next c
Serin2 rx,baud,5000,checkms,[WAIT(">")]
Al.
Last edited by aratti; - 8th October 2009 at 00:40.
All progress began with an idea
I have used a special routine so that to know if code is not getting stuck atleast after 5 tries which is as follows:
If sms[0]="d" and sms[1]="e" and sms[2]="a" and sms[3]="c" and sms[4]="t" then
i=i+1
if i=5 then
while 1
toggle portb.6
pause 100
wend : endif
for c=0 to 12
sum[c+8]=num[c]
next c
for c=0 to 21
serout tx,T2400,[sum[c]]
next c
Serin2 rx,baud,5000,checkms,[WAIT(">")]
Problem is that since I have made the last change of serin2....STR num\13, the code is getting stuck somewhere and not moving at all as it is not entering the toggle loop which it should after waiting 5 times for ">".
Sorry, I have forgotten to cange also the skip value after the string numeral:
Serin2 rx,baud,5000,main,[WAIT("REC UNREAD"),SKIP 3, STR num\13, skip 27, STR sms\8]
This should be one less since you have increased one byte the string.
Al.
All progress began with an idea
Bookmarks