如何使用PySeri将整数写入端口

2024-03-29 08:06:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用PySerial将数据写入第一个串行端口COM1。

import serial
ser = serial.Serial(0)
print (ser.name)
ser.baudrate = 56700
ser.write("abcdefg")
ser.close()

应该有用的。但是,我需要不断地发送28字节的整数;以

255 255 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

在循环中,每个整数使用一个字节的数据。

正在尝试:

import serial
ser = serial.Serial(0)
print (ser.name)
ser.baudrate = 56700
while True:
    ser.write(255 255 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000)
ser.close()

引发一个Syntax Error

如果^{}只发送字符串,如何将整数写入串行端口?如何确保每个号码都以8位发送?

这里有very little in the documentation for the class ^{},如有任何帮助,将不胜感激。


Tags: the数据端口nameimportclose字节serial
3条回答

我从来没有用过pySerial,但是看看上面的文档,你也可以发送字节。 所以请看一下:https://docs.python.org/3.1/library/functions.html#bytes

首先,编写123 12 123 123 123不是有效的Python语法。

用整数创建一个列表或元组:values = (1,2,3,4,5)

现在,我们需要将该数据转换为表示我们的值的二进制字符串。

我们是怎么做到的

import struct

values = (1,2,3,4,5)

string = b''

for i in values:
    string += struct.pack('!B',i)

# Now send the string to the serial port

根据每个数字要使用的字节数,需要对它们进行不同的打包。请参阅此处的文档:https://docs.python.org/3/library/struct.html

为此,我经常使用的习惯用法(从字节值列表中生成字符串)是:

''.join(map(chr,values))

如果你从一个空格分隔的数字列表开始,你可以疯狂地使用:

''.join(map(chr,map(int,values_string.strip().split())))

你可能猜到我喜欢地图。使用lambda函数更有趣!

相关问题 更多 >