繁体   English   中英

python串口读取在批处理文件中不起作用

[英]python serial port reading won't work in batch file

我写了一个从串口读取数据的python脚本。这个脚本在windows机器上运行。 在串行链路的另一端,有一个微控制器,上面连接着一个摄像头。 微控制器拍照后将其保存在闪存中,每当python脚本发送对该图片的请求时,它会将所有数据以字符串的形式发送到串口,然后脚本解析这些数据并逐行读取数据并将其保存在一个文件中,然后将其转换为二进制图像文件。 每当我在 Pycharm 中运行此脚本时,它总是可以正常工作而不会丢失任何数据,但是当我为此脚本创建批处理文件并运行批处理文件时,有时在从串行端口读取数据时会丢失一些数据,从而导致图像文件损坏。 从串口读取的数据格式如下:

20044478: 00 00 00 00 00 00 00 00 00 E0 01 80 02 3F 00 32

20044488: 12 0B 51 04 51 04 00 00 FF DB 00 84 00 10 0B 0C

20044498: 0E 0C 0A 10 0E 0D 0E 12 11 10 13 18 27 1A 18 16

200444A8: 16 18 30 22 24 1D 27 39 32 3C 3B 38 32 37 36 3F

200444B8: 47 5B 4D 3F 43 56 44 36 37 4F 6B 50 56 5E 60 65

200444C8: 66 65 3D 4C 6F 77 6E 62 76 5B 63 65 61 01 11 12

200444D8: 12 18 15 18 2E 1A 1A 2E 61 41 37 41 61 61 61 61

200444E8: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61

我认为与此问题相关的部分代码是:

def wait_On_serial_camera_capture():
global ser
out_file = open('test.txt', 'w+')
line_read = ser.readline()
# # time.sleep(0.1)
if line_read == "":
    print ("Error in image capturing or problem in transferring image file to the PC !")
while line_read != "":
    line_read = ser.readline()
    # # time.sleep(0.1)
    # # print (line_read)
    sys.stdout.write(line_read)
    sys.stdout.flush()
    out_file.write(line_read)
out_file.close()
ser.close()

检查您的环境。

你看 pycharm 有自己的环境。 有两个模块serialpyserial ,它们是不同的,它们都可以像import serial一样import serial PS:在 GNU/Linux 环境中,为了访问设备,您需要 root 权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM