准备着手写一个串口工具,当前编程环境,并没有办法接好下位机平台,需要模拟出一个串口,不断发送信息,方便调试串口工具。

1.win 下载虚拟串口

https://sourceforge.net/projects/com0com/files/latest/download
下载安装完成后,会在设备管理器中新增两个com。
这两个串口是互相接通的,一个com 可以当作上位机,一个com可以当作下位机

2.python 实现向一个串口内写数据,另一个串口内接受数据

#!/usr/bin/python
# -*-coding: utf-8 -*-import serial
import serial.tools.list_ports
import threading
import time
from datetime import datetime#列出所有当前的com口
port_list = list(serial.tools.list_ports.comports())
port_list_name = []class SerialPort:def __init__(self,port,buand):self.port = serial.Serial(port,buand)self.port.close()if not self.port.isOpen():self.port.open()def port_open(self):if not self.port.isOpen():self.port.open()def port_close(self):self.port.close()def send_data(self):#date = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]while True:date = datetime.now().strftime('%H:%M:%S.%f')[:-3]print("send:",date)self.port.write(date.encode())time.sleep(1)def read_data(self):while True:count = self.port.inWaiting()if count > 0:rec_str = self.port.read(count)print("receive:",rec_str.decode())def show_all_com():if len(port_list) <= 0:print("the serial port can't find!")else:for itms in port_list:port_list_name.append(itms.device)if __name__ == '__main__':baunRate = 115200print("1.list all com")show_all_com()print(port_list_name)print("2.open write port ",port_list_name[0])serialPort_w = port_list_name[0]mSerial_w = SerialPort(serialPort_w,baunRate)print("3.start write thread")t1 = threading.Thread(target=mSerial_w.send_data)t1.setDaemon(True)t1.start()print("4.open read port ",port_list_name[1])serialPort_r = port_list_name[1]mSerial_r = SerialPort(serialPort_r,baunRate)print("5.start read thread")t2 = threading.Thread(target=mSerial_r.read_data)t2.setDaemon(True)t2.start()#do something else, make main thread alive therewhile True:time.sleep(10)

代码流程:

  1. 启动一个子线程,打开com3 ,将当前时间作为数据,写入到串口
  2. 启动另一个子线程,打开com4,读取串口中写入的数据

注意点:

1.串口中写入的数据为byte类型,str to byte 需要 encode(), 默认使用utf-8
2.从串口中读取的数据,也是byte类型,byte to str 需要decode(), 默认使用utf-8
3.虚拟串口是两个设备直接的通信 ,需要在com3 中写 ,在com4中读,笔者犯过一个低级错误,com3写,也在com3中读,不会出任何数据
4.子线程设置为守护线程,主线程退出,子线程随之退出,后续可以在主线程中处理读取到的数据

运行结果

python 虚拟串口通信相关推荐

  1. python中串口通信的步骤及实现

    python内置的库函数确实很强大,serial库中包含了串口通信所用到的一些函数.本文用python实现了串口的一种简单通信. 代码实现: import serial#导入串口通信库 from ti ...

  2. PC和Android模拟器之间虚拟串口通信

    前言 很多时候我们在做串口通信的时候需要去模拟串口来调试,这样可以极大的方便我们的工作,不然的话可能需要连接硬件设备,比较麻烦.一般情况下我们先在电脑上模拟串口后初步调试,最后阶段在硬件设备上实际调试 ...

  3. Windows下使用Python实现串口通信

    Windows下使用Python实现串口通信 基本信息 配置过程 配置思路 详细配置过程 安装USB装TTL驱动 配置serial库 获取设备端口号 配置串口通信 配置说明 测试过程 其他学习记录 参 ...

  4. c# 蓝牙虚拟串口_C# 虚拟串口通信

    将主端口COM8拆分成 COM1和COM2两个虚拟端口 COM8接收的消息会传递给COM1和COM2 SerialPort spSend;//spSend,spReceive用虚拟串口连接,它们之间可 ...

  5. Linux c语言虚拟串口,利用socat和cutecom实现Linux虚拟串口通信

    (1)打开终端,输入 sudo apt-get install socat 等待socat安装完成- (2)输入 socat -d -d pty,raw,echo=0 pty,raw,echo=0 我 ...

  6. python树莓派串口通信实例_树莓派通过串口发送数据

    可以通过串口登陆树莓派,也可以通过串口向其他主机发送数据.树莓派的串口接受数据科技爱好者博客已经写过,可以参考这篇文章:树莓派与arduino串口通信实践.这篇文章教大家如果通过树莓派的串口发送数据. ...

  7. Android模拟器实现windows虚拟串口通信调试

    1. 下载  Virtual Serial Port Driver ,安装后好后,创建一对虚拟串口 2.打开计算机管理 查看设备管理->端口 查看是否生成虚拟端口.(如果没有生成 重启试下) 3 ...

  8. python虚拟串口_Linux下的虚拟串口对(可用于在本机上模拟串口进行调试)

    今日编写了一个串口通讯程序,但是本机只有一个串口,无法验证程序的正确性,于是想到在linux下面增加一对虚拟串口 Python: #! /usr/bin/env python #coding=utf- ...

  9. 基于Windows的蓝牙虚拟串口通信

    一.枚举本地蓝牙设备 /******************************************************************************\ 枚举本地所有蓝牙 ...

最新文章

  1. 快速 开发平台 架构_快速介绍清洁架构
  2. C# DataTable的詳細使用方法
  3. 1102: 火车票退票费计算(函数专题)
  4. Spring的Java配置方式
  5. Dapper官方教程翻译8:Dapper方法之QueryMultiple(转)
  6. Ubuntu彻底删除MySQL重装MySQL
  7. 脉冲宽度调制pdm_STM32第七章-脉冲宽度调制
  8. ENVI入门系列教程---一、数据预处理---7.图像镶嵌
  9. mysql longtext 查询_mysql,_mysql中longtext存在大量数据时,会导致查询很慢?,mysql - phpStudy...
  10. Windows系统没有目标位置的快捷方式及其目标文件获取
  11. 到底什么是移动边缘计算?
  12. 从零开始的数模学习(5):TOPSIS法(评价类模型)
  13. 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程(转)
  14. linux 移动硬盘 mac,Macbook pro使用原生EFI在移动硬盘安装Windows+Fedora双系统
  15. effective python pdf下载-《Effective Python》电子书pdf下载百度网盘
  16. 2015我的校招季,阿里、搜狗、百度、蘑菇街面试总结
  17. Hive查询分析计算:股票分析
  18. 基于单片机的点光源控制系统
  19. php $a=3,<?php$a=1;$b=2;$c=3;($a=4)?($b++):($c++);echo$a,$b,$c;?>输出结果为
  20. 了解会员管理软件基本功能,挑选适合的会员管理系统

热门文章

  1. 咨询案例:再来几种利益相关人地图
  2. 计算机丢失系统文件如何找回,电脑引导文件丢失怎么办 引导文件丢失恢复方法...
  3. 基于Vue+Vant的旅游WebApp的设计与实现
  4. B站粉丝计数器!基于microByte
  5. Python绘制三维立体图详解与绘图填充
  6. WPF 程序的编译过程
  7. openmediavault安装
  8. linux lilo_LInux装箱商(LILO)| 免费和开源软件
  9. 学习《论文写作》课程的收获
  10. prim算法之处女作