这是我第一次问关于stackoverflow的问题,请耐心等待。
我基本上是在测试一个板,该板充当GPS和计算机之间的中继。我在python中创建了一个模拟器来模仿GPS。该测试的目的是通过UART串行端口将仿真数据从仿真器发送到板,并确保板可以接收和发送消息。
从GPS(我的仿真器)以9600波特率将字符串 START 发送到标有GPS品牌的标牌开始。一旦开发板接收到该字符串,它就会根据GPS的消息协议格式化整数配置消息,并以9600波特率将配置消息 CFG_MSG 发送到GPS。 GPS收到此配置消息后,必须以57600波特率发送整数确认消息。
我的问题是我收到了来自主板的配置消息,但是我无法发送确认消息。我不确定1)仿真器是否实际更改了波特率,以及2)仿真器是否正确发送了字节。
请在下面查看我的伪代码:
START = 'thisIsGpsX'
CFG_MSG = 0x1234567890
def start_gps():
ser = serial.Serial('/dev/ttyPS0', 9600)
time.sleep(3) # give board time to set its ready signal
ser.write(START)
time.sleep(1)
byte_count = 0
recv_msg = 0
while(byte_count < 5):
byte_count = byte_count+1
recv_msg = ((struct.unpack('B',ser.read(1)))[0]) + (recv_msg << 8)
if(recv_msg != CFG_MSG):
print('wrong message received')
# the code preceding this comment works b/c I am able to receive the cfg msg
# I am unsure if the code succeeding this comment works or not b/c the board
# fails to communicate with the GPS hereafter
ser.baudrate = 57600
time.sleep(0.2)
ack_msg = bytes([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xA])
for i in range(10):
ser.write(ack_msg[i])
time.sleep(0.05)
非常感谢您的帮助!
编辑:我正在使用python 2.7.9