Serial Port. Com1 communication
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller
Re: Serial Port. Com1 communication
FYI - To those that attempted to help and any other newbie needing to do this.
This is the code that made it work:
on mouseUp
set the serialControlString to BAUD=38400, PARITY=N, DATA=8, STOP=1
open driver COM1 for binary update
write numToChar(0xFE) to driver COM1
write numToChar(0x08) to driver COM1
end mouseUp
Had to do a lot of reading, but I found it. Hope it helps someone.
I now need to figure out how to send all the hex commands with one write command line.
This is the code that made it work:
on mouseUp
set the serialControlString to BAUD=38400, PARITY=N, DATA=8, STOP=1
open driver COM1 for binary update
write numToChar(0xFE) to driver COM1
write numToChar(0x08) to driver COM1
end mouseUp
Had to do a lot of reading, but I found it. Hope it helps someone.
I now need to figure out how to send all the hex commands with one write command line.
Re: Serial Port. Com1 communication
Figured that one out too.
write numToChar(0xFE) & numToChar(0x08) to driver COM1
By the way it works on version 6, 7 and 8.
You guys are great!
Thank you so much
write numToChar(0xFE) & numToChar(0x08) to driver COM1
By the way it works on version 6, 7 and 8.
You guys are great!
Thank you so much
Re: Serial Port. Com1 communication
Just looking into LC. (Old Hypertalker)
Possible to build in LC an app like CoolTerm? Interested in building tools for talking to a TinyG stepper controller board.
Possible to build in LC an app like CoolTerm? Interested in building tools for talking to a TinyG stepper controller board.
rebuilding visual programming app originally created in 1993 as Hypercard stack
Re: Serial Port. Com1 communication
I would say it is possible to build anything using LiveCode, but I have had lots of trouble with the syntax. Manual is not clear and has errors.
Re: Serial Port. Com1 communication
0xFE = 254
so use numtochar(254)
In the end use this code:
so use numtochar(254)
In the end use this code:
Code: Select all
put numtoChar(254) into temp
put numtoChar(8) after temp
write temp to driver "COM1:"
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
Re: Serial Port. Com1 communication
I'm playing with serial now too. (that is in Livecode, already played with it before)
I have to send 8 byte in hex, but it is nowhere very clear stated how to send the hex codes
should it be one string like "F7-10-A0- etcetera"
or "F7,10,A0- etcetera"
or enter a lot of text lines like:
write numToChar(0xFE) to driver COM1
write numToChar(0x08) to driver COM1
or a big line like:
write numToChar(0xFE) & numToChar(0x08) to driver COM1
or as Klaus said:
write "0xFE, 0x08" to driver "COM1:"
at least a little test i did is that:
and
both the exact same result
Could someone be exactly clear how to write hex code to the com port?
thanks a lot!
Best to you all,
Sphere
I have to send 8 byte in hex, but it is nowhere very clear stated how to send the hex codes
should it be one string like "F7-10-A0- etcetera"
or "F7,10,A0- etcetera"
or enter a lot of text lines like:
write numToChar(0xFE) to driver COM1
write numToChar(0x08) to driver COM1
or a big line like:
write numToChar(0xFE) & numToChar(0x08) to driver COM1
or as Klaus said:
write "0xFE, 0x08" to driver "COM1:"
at least a little test i did is that:
Code: Select all
on mouseUp
put numToChar(0xFE) into fld"Field"
end mouseUp
Code: Select all
on mouseUp
put numtoChar(254) into fld"Field"
end mouseUp
Could someone be exactly clear how to write hex code to the com port?
thanks a lot!
Best to you all,
Sphere
Re: Serial Port. Com1 communication
You can't see not ASCII chars on a screen, so you should use this code:
########CODE#######
on mouseUp
put numtoChar(254) into temp
put numtoChar(8) after temp
put temp into URL "binfile:test.txt"
end mouseUp
#####END OF CODE#####
Now use an hex editor to open the file "test.txt" and you'll see "FE 08".
########CODE#######
on mouseUp
put numtoChar(254) into temp
put numtoChar(8) after temp
put temp into URL "binfile:test.txt"
end mouseUp
#####END OF CODE#####
Now use an hex editor to open the file "test.txt" and you'll see "FE 08".
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
Re: Serial Port. Com1 communication
Hi Maxv,
yes i understand.
It threw the same strange character in lc.
that's why i said it has the same result.
SPhere
yes i understand.
It threw the same strange character in lc.
that's why i said it has the same result.
SPhere
Re: Serial Port. Com1 communication
Livecode interprets hexadecimals numbers as numbers so:
is the same of
Livecode automatically transforms an hexadecimal number (that starts with 0x) with its correspondent decimal number.
On the contrary a string remain a string, so "0x01" isn't 1, but 0x01 is 1.
For example:
0x02 = 2
0x0E = 14
0x0F = 15
0x10 = 16
0xFE = 254
Code: Select all
put 0x01 + 0x01
Code: Select all
put 1 + 1
On the contrary a string remain a string, so "0x01" isn't 1, but 0x01 is 1.
For example:
0x02 = 2
0x0E = 14
0x0F = 15
0x10 = 16
0xFE = 254
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
Re: Serial Port. Com1 communication
BUon Giorno MaxV,
ok so have to write decimals to get Livecode to send hex.
As the device which i want to control only accept HEX
But i guess it's also possible to send hex straight to it?
then i have to rewrite my code because now i have lines like this:
But these are Hex, not decimals
So how do i write it when i want livecode to send plain Hex code?
Also when testing with Virtual Com ports Livecode totally locks up.
I even am trying a virtual nulmodem, which causes the send data to be read again directly
So i have to test it yet with the real device.
ok so have to write decimals to get Livecode to send hex.
As the device which i want to control only accept HEX
But i guess it's also possible to send hex straight to it?
then i have to rewrite my code because now i have lines like this:
Code: Select all
write numToChar(0x43) to file tCom
write numToChar(0x55) to file tCom
write numToChar(0x01) to file tCom
So how do i write it when i want livecode to send plain Hex code?
Also when testing with Virtual Com ports Livecode totally locks up.
I even am trying a virtual nulmodem, which causes the send data to be read again directly
So i have to test it yet with the real device.
Re: Serial Port. Com1 communication
Hi Sphere,
sorry but you misunderstood me. I meant that for livecode it's the same if you write 67 or 0x43.
So you can write
or
but you'll obtain the same result.
A char for a computer is just a series of bit, so byte 67 is "C" is you want to interpret as a char, it is 67 is you want to read a bit value in decimal base, is 0x43 is you want to read as bit value as hexadecimal value, but in the end is always just this series of bit: 01000011
A text editor just separates bit at piece of 8 bit each, so he shows the "01000011" sequence as "C". All serial port values are from 0 to 255, but these value are not all associated to visible char on screen, so if you try to see all chars from 0 to 255 you'll get this list:
0=
1=
2=
3=
4=
5=
6=
7=
8=
9=
10=
11=
12=
13=
14=
15=
16=
17=
18=
19=
20=
21=
22=
23=
24=
25=
26=
27=
28=
29=
30=
31=
32=
33=!
34="
35=#
36=$
37=%
38=&
39='
40=(
41=)
42=*
43=+
44=,
45=-
46=.
47=/
48=0
49=1
50=2
51=3
52=4
53=5
54=6
55=7
56=8
57=9
58=:
59=;
60=<
61==
62=>
63=?
64=@
65=A
66=B
67=C
68=D
69=E
70=F
71=G
72=H
73=I
74=J
75=K
76=L
77=M
78=N
79=O
80=P
81=Q
82=R
83=S
84=T
85=U
86=V
87=W
88=X
89=Y
90=Z
91=[
92=\
93=]
94=^
95=_
96=`
97=a
98=b
99=c
100=d
101=e
102=f
103=g
104=h
105=i
106=j
107=k
108=l
109=m
110=n
111=o
112=p
113=q
114=r
115=s
116=t
117=u
118=v
119=w
120=x
121=y
122=z
123={
124=|
125=}
126=~
127=
128=�
129=�
130=�
131=�
132=�
133=�
134=�
135=�
136=�
137=�
138=�
139=�
140=�
141=�
142=
143=
144=�
145=�
146=�
147=�
148=�
149=�
150=�
151=�
152=�
153=�
154=�
155=�
156=�
157=�
158=�
159=�
160=�
161=�
162=�
163=�
164=�
165=�
166=�
167=�
168=�
169=�
170=�
171=�
172=�
173=�
174=�
175=�
176=�
177=�
178=�
179=�
180=�
181=�
182=�
183=�
184=�
185=�
186=�
187=�
188=�
189=�
190=�
191=�
192=
193=
194=
195=
196=
197=
198=
199=
200=
201=
202=
203=
204=
205=
206=
207=
208=
209=
210=
211=
212=
213=
214=
215=
216=
217=
218=
219=
220=
221=
222=
223=
224=
225=
226=
227=
228=
229=
230=
231=
232=
233=
234=
235=
236=
237=
238=
239=
240=
241=
242=
243=
244=
245=
246=
247=
248=
249=
250=
251=
252=
253=
254=�
255=�
as you can see, many chars are not for screen.
An hex editor separate bit as a text editor, but show you just byte value.
For example the string "Hello world" is shown as "0x68 0x65 0x6C 0x6C 0x6F 0x20 0x77 0x6F 0x72 0x6C 0x64".
For example the string "67" is shown as "0x36 0x37". (two values, char "6" and char "7")
The function numToChar() assure you that you are sending correcting the bit to the serial port. Unfortunately human can't use the keyboard, because as you saw many chars are not on a human keyboard.
Just to show you better this idea, you wrote this code:
but you could do the same task with:
only the last char is not on a human keyboard, so you have to use numToChar() function.
sorry but you misunderstood me. I meant that for livecode it's the same if you write 67 or 0x43.
So you can write
Code: Select all
write numToChar(0x43) to file tCom
Code: Select all
write numToChar(67) to file tCom
A char for a computer is just a series of bit, so byte 67 is "C" is you want to interpret as a char, it is 67 is you want to read a bit value in decimal base, is 0x43 is you want to read as bit value as hexadecimal value, but in the end is always just this series of bit: 01000011
A text editor just separates bit at piece of 8 bit each, so he shows the "01000011" sequence as "C". All serial port values are from 0 to 255, but these value are not all associated to visible char on screen, so if you try to see all chars from 0 to 255 you'll get this list:
0=
1=
2=
3=
4=
5=
6=
7=
8=
9=
10=
11=
12=
13=
14=
15=
16=
17=
18=
19=
20=
21=
22=
23=
24=
25=
26=
27=
28=
29=
30=
31=
32=
33=!
34="
35=#
36=$
37=%
38=&
39='
40=(
41=)
42=*
43=+
44=,
45=-
46=.
47=/
48=0
49=1
50=2
51=3
52=4
53=5
54=6
55=7
56=8
57=9
58=:
59=;
60=<
61==
62=>
63=?
64=@
65=A
66=B
67=C
68=D
69=E
70=F
71=G
72=H
73=I
74=J
75=K
76=L
77=M
78=N
79=O
80=P
81=Q
82=R
83=S
84=T
85=U
86=V
87=W
88=X
89=Y
90=Z
91=[
92=\
93=]
94=^
95=_
96=`
97=a
98=b
99=c
100=d
101=e
102=f
103=g
104=h
105=i
106=j
107=k
108=l
109=m
110=n
111=o
112=p
113=q
114=r
115=s
116=t
117=u
118=v
119=w
120=x
121=y
122=z
123={
124=|
125=}
126=~
127=
128=�
129=�
130=�
131=�
132=�
133=�
134=�
135=�
136=�
137=�
138=�
139=�
140=�
141=�
142=
143=
144=�
145=�
146=�
147=�
148=�
149=�
150=�
151=�
152=�
153=�
154=�
155=�
156=�
157=�
158=�
159=�
160=�
161=�
162=�
163=�
164=�
165=�
166=�
167=�
168=�
169=�
170=�
171=�
172=�
173=�
174=�
175=�
176=�
177=�
178=�
179=�
180=�
181=�
182=�
183=�
184=�
185=�
186=�
187=�
188=�
189=�
190=�
191=�
192=
193=
194=
195=
196=
197=
198=
199=
200=
201=
202=
203=
204=
205=
206=
207=
208=
209=
210=
211=
212=
213=
214=
215=
216=
217=
218=
219=
220=
221=
222=
223=
224=
225=
226=
227=
228=
229=
230=
231=
232=
233=
234=
235=
236=
237=
238=
239=
240=
241=
242=
243=
244=
245=
246=
247=
248=
249=
250=
251=
252=
253=
254=�
255=�
as you can see, many chars are not for screen.
An hex editor separate bit as a text editor, but show you just byte value.
For example the string "Hello world" is shown as "0x68 0x65 0x6C 0x6C 0x6F 0x20 0x77 0x6F 0x72 0x6C 0x64".
For example the string "67" is shown as "0x36 0x37". (two values, char "6" and char "7")
The function numToChar() assure you that you are sending correcting the bit to the serial port. Unfortunately human can't use the keyboard, because as you saw many chars are not on a human keyboard.
Just to show you better this idea, you wrote this code:
Code: Select all
write numToChar(0x43) to file tCom
write numToChar(0x55) to file tCom
write numToChar(0x01) to file tCom
Code: Select all
write "C" to file tCom
write "U" to file tCom
write numToChar(0x01) to file tCom
Last edited by MaxV on Fri Sep 02, 2016 3:28 pm, edited 1 time in total.
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
Re: Serial Port. Com1 communication
Hi MaxV,
thanks for this.
***edit***
Great!
Got it working.
Device responds OK!
And LC7.1.4 does not lock up.
Thanks!
Ciao!
Sphere.
thanks for this.
***edit***
Great!
Got it working.
Device responds OK!
And LC7.1.4 does not lock up.
Thanks!
Ciao!
Sphere.