导航:首页 > 编程语言 > python十六进制串口通信

python十六进制串口通信

发布时间:2023-08-30 15:30:04

⑴ 如何用python实现串口通信

Python非常适合写一些测试的脚本,如快速的串口通信测试等。如果使用VC++ QT开发,可能用时较多,使用python,如果掌握使用方法,可以直接读写测试,配合设备或是串口助手,很快验证与实现。
Python有没有现成的串口API直接调用呢?经过实践验证,需要安装一个叫 Pyserial的组件即可。这个可以在github上下载。

在windows 7 64bit 上可以使用吗?当然可以使用,我安装的python3.5为64位的。把下载后的文件,其中有一个serial的文件夹,拷贝到python35安装路径, C:\Python35\Lib\site-packages\serial
网上可以搜一下windows的安装包,安装完也是:C:\Python35\Lib\site-packages\serial ,可以用最新的版本,替换即可。
测试的方法:在python IDE里测试:
>>> import serial
这里如果报错,是python版本与pyserial版本没有配合好。如果正常,不返回,即可以导入serial模块。
>>> ser=serial.Serial("COM5",115200)
这里为COM5,115200的波特率。如果打不开,请检查安装环境。
>>> ser.write('hello,serial test'.encode())
17
发送测试(如果返回字节数,说明返回成功),这里需要转换一个编码为字节。
以上测试,可以使用现在的设备或是串口助手,如安装Virtual Serial Port Driver 7.2 虚拟串口软件,设置一对串口,进行自发自收的测试。
>>> print(ser.readline())
b'abcdefg\r\n'
这里是串口接收,有接收的超时。设备或是串口助手发送一个字符串,以回车换行结束,这里就可以收到打印出来。
也可以用ser.read(),这里只接收一个字符来实现。
上面已经实现了基本的串口操作。
关闭串口为:
>>> ser.close()
如果使用python,一般写个py文件,就像windows bat 批处理一样,这是python强大的地方。如果写一个py脚本呢?其实只要把上面的命令,一条条写下来,就是一个脚本,测试如下:
import serialser=serial.Serial("COM5",115200,timeout=0.5)for i in range(0,100-1):ser.write('hello\r\n'.encode())print(ser.readline());ser.close()

⑵ plc与python之间实现通信

python语言与plc建立串口通信时,无法直接读写。
用到python的serial 模块

在创建串口对象时需要定义其属性与plc一致:

self.main_engine.baudrate = self.bps
self.main_engine.bytesize = 7
self.main_engine.parity = 'E'
self.main_engine.stopbits = 2

重点:在写入数据后,需要写16进制数"0D",结束标志位

self.main_engine.write("@00WD1010000152*".encode())
self.main_engine.write(binascii.a2b_hex("0D"))

⑶ 如何用python写个串口通信的程序

打开串口后启动一个线程来监听串口数据的进入,有数据时,就做数据的处理。

⑷ Python Serial 串口能不能发送16进制的数字

pyserial默认的写入格式是字符串,并不是16进制的。接收到的也是字符串,除非你在接收端设置了默认接受hex格式,就会显示hex。我用过蓝牙串口和Arino开发板的串口,收到的都是字符串。

⑸ Python Serial 串口能不能发送16进制的数字

以十六进制发送
import serial
t = serial.Serial('com1',9600)
t.write("\x55\x53".encode('utf-8'))

⑹ 用python输入一个十进制数,输出其二进制串,八进制串,十六进制串

好久没写过汇编的程序了,代码估计我现在做不出来,能告诉你下原理~~~把3位十进制分别读入后,存到内存的是相应符号的ASC2码,将这个符号asc码转成数字的asc码 比如9 存进去的是39H 要变成 1001,也就是9h,比如存入999 就通过10进制的计算可以求出来 转成2进制的asc码 存成一个16位的acs码 要输出2进制的时候每次读最后一位,之后有个循环移位的命令,总共循环12次 将取出来的值变成可以输出的字符asc码 1---->31h 0----->30h 一个个输出出来就可以了 八进制的,从最后一位开始读,每3个二进制存成一个,将他变成对应的十进制,即 001 --->1,011----> 3,110-->6, 100---> 4 即4631最后的输出,将每个数字转成相应的可输出二进制,之后挨个输出出来,记得顺序 4输出是第一个,但却是最后算出来的~~~~ 16进制的,从最后一位读,每4位存成一个,之后将得到的字符转成可以输出的字符asc码之后挨个输出,注意顺序就可以了相应的asc码转换可以参考那本书后面的附录,里面有各个符号对应的asc码,进行简单的计算就能够得到~~~~~ 希望能对你有点启发,要是1年前问我,估计很快就能做出来了,就是很久不用了,一直用C++来着,真是对不住啊~~~

⑺ Python serial

>>> import serial
>>> ser = serial.Serial(0) #开启串口0
>>> ser.write("\xAA") #写十六进制AA
>>> ser.close() #关闭串口

阅读全文

与python十六进制串口通信相关的资料

热点内容
手机看世界名着哪个app好 浏览:491
运行命令切换打印机用户 浏览:919
android滑动button 浏览:939
服务器日志可以干什么 浏览:644
安卓系统空间怎么清理软件 浏览:343
维也纳pdf 浏览:641
加密货币交易所哪个最好 浏览:816
linux的现状 浏览:926
命令与征服叛逆者修改器 浏览:246
怎么用ios玩安卓全民枪战 浏览:668
程序员入行前后的头发 浏览:711
嵌入式图像算法 浏览:329
服务器如何访问服务器失败 浏览:875
android进度球 浏览:1001
Linux造成xfs文件夹 浏览:457
华为手机怎么修改wifi加密类型 浏览:250
服务器封口是什么意思 浏览:743
有限元分析是算法吗 浏览:901
空气压缩机性能曲线 浏览:22
京城程序员2019 浏览:406