1. 读取串口设备数据编程
后台线程将数据写到一个缓冲区,也就是全局变量(可以用队列)里。然后在界面上使用一个timer,定时刷新,从缓冲区获取数据后写到控件上。原理是这样子。你摸索一下就解决了。有一本书,python tkiner编程,有电子版的。基本上你所要的所有东西都可以找到。
2. plc读取串口数据
西门子PLC针对外部设备,使用串口通信时,协议为MODBUS,但通常为2种方式,1是PLC为主站,读取外部设备信号,比如变频器,温控器等,从网上下载西门子200PLC指令库,调用里面的集成指令MASTER即可,不会写的找到那些指令按F1,帮助里都有范例。
然后对照设备厂家的数据接口表,从接收到的数据里剥离自己想要的数据,逻辑处理后再写进去。
第2种是PLC是从站,响应外部主站信号,比如楼宇自控系统要读取你PLC的数据,就走MODBUS协议,在指令库里找到SLAVER指令,调用。 至于什么接口并不是重点,接口可以转化,
3. 获取串口设备数据
这类本地操作,没有纯 web 解决方案 仅仅浏览器内页面脚本是无法做到的。 其核心是需要可跑在本地系统上的串口读取程序 不管 ActiveX、本地Node、或者本地其他应用程序都是如此 此外,还需要读取后可与浏览器页面交换数据的过程 所以
4. 串口数据读取软件
Arduino调试软件是一款串口调试工具,由零知实验室开发的免费工具。该软件集成串口助手、文本传输、ISP工具、串口绘图、串口摄像头、网络调试、网络摄像头、NFC工具等多种功能,是一款功能强大,简单易用的优秀的电子开发辅助开发工具。
打开零知工具箱,左侧切换到“串口”选项卡中的“串口助手”面板,把Arduino UNO主板通过USB数据线连接到电脑主机。
5. 串口通信读取数据
VB6.0MsComm控件可以利用OnComm事件连续获取来自外设发送的信号。
基于:
1)MsComm控件的RThreshold 属性不为0和恰当的接收代码。
2)使用电脑主板物理COM口或PCI多串口卡上的COM口COM,这样的COM口是全双工的,发送与接收不会冲突。
3)高质量的接收代码和符合通信协议和数据帧规约的接收处理代码。
实例代码:
Private Sub Form_Load() MSComm1.InputMode = comInputModeBinary '采用二进制传输 MSComm1.InBufferCount = 0 '清空接受缓冲区 MSComm1.OutBufferCount = 0 '清空传输缓冲区 MSComm1.RThreshold = 1 '产生MSComm事件 MSComm1.InBufferSize = 1024 TxtSend = "" TxtSend = "" txtReceive = "" Text2 = ""End SubPrivate Sub MSComm1_OnComm() '接收数据 Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 strBuff = MSComm1.Input BytReceived() = strBuff jieshou lenInput = Len(strData) Text2 = lenInput \ 2 '数据处理代码 End SelectEnd SubPublic Function jieshou() '接收数据处理为16进制 Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next txtReceive = strDataEnd Function
6. 串口数据抓取
你的这个串口设备在打开(也就是调用open函数获取设备描述符)的时候设置的是非阻塞方式。导致串口上没数据的时候read也立即返回,但是你的while已经把有效的数据读走了,if里面读到的一定是空的,所以什么也不打印。 建议
1. 在打开串口设备时使用阻塞方式,不会设置的话查查open系统调用的帮助,它有个flag;
2. 把while循环内的if语句去掉。
7. 读取串口服务器数据
串口服务器轮询模式,可以直接通过服务器的数据管理系统直接设置
8. 读取串口设备数据编程软件
可以通过设备管理器查看下com口的占用情况。在我的电脑-》设备管理器-》端口—》双击一个串口--》端口设置-》高级--》左下角com端口号,点击就可以看到电脑支持几个串口,哪些串口已经被占用,也可以在这里修改串口的编号。
9. 串口数据 处理
Spcomm串口通信控件的基本属性、方法和事件说明如下:
CommName属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。
Parity属性:校验位 None、Odd、Even、Mark、Space等。
BaudRate:设定支持串口通信用的波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。
ByteSize属性:表示一个字节中,使用多少个数据位收发数据,根据具体情况设定5、6、7、8等。
StopBits属性:表示一个字节中,使用停止位的位数,根据具体情况设定1、1.5、2等。
SendDataEmpty属性:布尔属性,为True时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。
StartComm方法:用来打开通信串口,开始通信。如果失败,则会导致串行口错误。错误类型大致分为串行口己处于打开状态,所以不能打开串行口,不能创建读写进程,不能建立串行口缓冲区等。
StopComm方法:用来停止通信串行口的所有进程,关闭串口。
WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word)方法是带有布尔型返回值 的函数,其中参量pDataToWrite是要写入串行口的字符串,dwSizeofDataToWrite是要写入的字符串的长度。该函数通过一个写线程向串行口输出缓冲区发送数据。发送操作将在后台默认执行。如果写线程 PostMessage成功,则返回值是True,若写线程失败,返回值是False。
OnReceiveData(Buffer:Pointer;BufferLength:Word),其中Buffer是指向输入缓冲区的指针。BufferLength是从缓冲区收到的数据长度。当输入缓冲区收到数据时,该事件被触发。当输入缓存有数据时将触发该事件,对从串口收到的数据进行处理。