Python串行端口读取在批处理文件中不起作用

问题描述 投票:0回答:1

我编写了一个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()
python batch-file pycharm pyserial
1个回答
0
投票

检查您的环境。

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

© www.soinside.com 2019 - 2024. All rights reserved.