I am working with a project where i need to read data from my device(i.e ADAM 4520)using serial to usb converter. 1st i tested with my PC using hyper terminal and with Raspberry Pi 3 using GtkTerm,it is perfectly working. As both hyper terminal and gtkterm using ascii and my device ADAM-4520 also understand ascii,But how to communicate through python code i am not finding way as i am new to python and raspberry pi ,please guide me. Here is my code
import serial import time s=serial.Serial(port='/dev/ttyS0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,timeout=1) st="#04" st=''.join(str(ord(c)) for c in st) x=st.encode('ascii') while True: s.write(x) print(x) time.sleep(0.2) text=s.readline() temp=text.decode('ascii') #text=text.decode('utf-8') #text=text[5:-1] print(temp)
here is my output
354852 b'' 354852 b'' 354852
i am receiving nothing. where as using gtkterm i am getting response.
#04 >+261.27+310.83+049.09+206.77+126.81+049.79 #042 >+049.11
After changing the code it worked properly. So i updated here my code as it will definitely help newbie. My device is ADAM-4520(485-232 converter),ADAM-4015(6-channel RTD module). I am interfacing this two device with my raspberry Pi 3 with serial (Rx/Tx)pin.
import serial import time import struct s=serial.Serial(port='/dev/ttyS0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1) st="\x23\x30\x34\x0D" x=st.encode() while True: s.write(x) print("write: ",x) time.sleep(1) text=s.readline() temp=text.decode('utf-8') print("response: ",temp) time.sleep(2)
And here is my output.
write: b'#04\r' Response: >+261.20+310.60+049.08+206.75+126.77+049.79
So it need a enter command along with command “#04″(which is given in document of device ,but enter command needed it isn’t given on documentation.