[SOLVED]Send Serial ASCII string to Web Server
-
I have a lopy with expansion board I have connected pin 4 of the lopy to pin 3 (tx) of a serial cable aswell as ground to ground. I am using cmd echo hello > COM9 from windows shell, but I get as a hex string as an output.
b'\x00\x80\x80\x80\x00\x00\x80\x00\x80\x80\x80\x00\x80\x80\x80\x00\x00\x80\x00'
import machine
uart1 = machine.UART(1, baudrate=9600, bits=8, parity=None, stop=1)
while True:
print(uart1.readall())
time.sleep(1)Is this expected output? My goal is my family has a weigh station and want to have the weight displayed in their office which is 10m away from weigh machine. The weigh station out puts ASCII string via RS-232 connection as follows
<STX> <SIGN> <WEIGHT(7)> <STATUS> <EXT>
STX: Start of transmission character (ASCII 02)
ETX: End of transmission character (ASCII 03)
SIGN: The sign of the weight reading (space for positive, dash (-) for negative)
WEIGHT(7): A seven character string containing the current weight including decimal point, then first character isa space. Leading zero blanking applies.
STATUS: Provides information on the weight reading. The characters G?N?U?O?M?E represent Gross/ Net/ Underload/ Overload/ Motion/ Error.If the output is in HEX how can I represent this to POST in usable data? Can I use ubinascii conversion?
Any help would be great.
-
I managed to get this to work thanks to your help, used a sparkfun MAX3232 to step down the RS232 to UART and ASCII strings appear as expected and was able to upload them to a web server.
-
@livius thanks I have a bunch of these lying around will give that a try thanks everyone
-
@jcaron damn that makes sense, so I would need some kind of step down can this be done by an ardiuno I have one lying around.
-
@jcaron
I ommit that he say about RS232!@jimpower
RS232 is not an UART. And 5V levels can kill your lopy board it is 3V3 device.
If you need to connect it to your PC use TTL converter e.g. USB->UART.
You then can have virtual COM on your PC.
-
Isn’t there an issue with levels? I.e. +/- 5V for regular serial port compared to 0/3V for the LoPy or something similar?
-
@livius Yes my tx is on pin4 and rx on p3. I will try without expansion board thanks.
-
@jimpower
Then only some wiring problem must be.
You have connectedP4
which is default RX for UART1 with TX of your serial converter
For test connect also RX from converter to TX (P3
). And look if all is ok.
And if possible test Lopy without expansion board.
-
I sent plain text hello with same garbage response
-
@jimpower
no this looks like garbage
what is your putty com settings?
UPDATE
can you clarify this
I used putty and got this output from
set /p x="hello world" <nul >.\COM9above command can be run from windows CMD after setting com settings by
mode
command
you can not run it from putty it send this as text
-
Thanks for your reply,
I used putty and got this output from
set /p x="hello world" <nul >\.\COM9
b'fr3rfr\x193r\x19rfr3r\x19r3rfrfr3rfr3rgr3rfrgrfr3r3rfrg\x00\xa9::\n*\x00yFrgrgrggr3rfrfrgrfrfrf3r3rfr\x19r\trMr\x12r\x12rHrKr\trcr\x0cr\x06r\x06r\x08rgr3rgr3rfr\x19r'
Does this look accurate?
-
@jimpower said in Send Serial ASCII string to Web Server:
\x00\x80\x80\x80\x00\x00\x80\x00\x80\x80\x80\x00\x80\x80\x80\x00\x00\x80\x00'
this is not
hello
sentence
first look if you have same port configuration on PCtype
mode
into command line and look like is your port really configured
it can be different than showing in device manager ;-)to see how to configure port, type
mode /?
e.g.
mode COM1 BAUD=9600 PARITY=n DATA=8 STOP=1 rts=off cts=off
and to send data from command without line break and spaces use
set /p x="hello world" <nul >\\.\COM1
but better use any com port software like putty, comport monitor from Arduino IDE ...