fWriteStat = WriteFile(hCom, szBuffer, dwBytesToWrite,
dwBytesWritten, WRITE_OS( npTTYInfo ) ); //写数据
//我在CreareFile()时使用了FILE_FLAG_OVERLAPPED,现在WriteFile()也必须使用LPOVERLAPPED结构.否则,函数会不正确地报告写操作已完成了.
使用LPOVERLAPPED结构,WriteFile()立即返回,不必等待写操作完成,实现非阻塞 通信.此时, WriteFile()返回FALSE, GetLastError()返回ERROR_IO_PENDING.
int err=GetLastError();
if (!fWriteStat) {
if(GetLastError() == ERROR_IO_PENDING){
while(!GetOverlappedResult(hCom, WRITE_OS( npTTYInfo ),
dwBytesWritten, TRUE )) {
dwError = GetLastError();
if(dwError == ERROR_IO_INCOMPLETE){// normal result if not finished
dwBytesSent += dwBytesWritten; continue; }
......................
//我使用了多线程技术,在辅助线程中监视串口,有数据到达时依靠事件驱动,读入数据并向主线程报告(发送数据在主线程中,相对说来,下行命令的数据总是少得多);并且,WaitCommEvent()、ReadFile()、WriteFile()都使用了非阻塞通信技术,依靠重叠(overlapped)读写操作,让串口读写操作在后台运行 。
请教用VB.NET向串口发送16进制的数的方法应该是你的转换格式不正确,下面代码就是将文本框中以一个空格隔开的十六进制转为字节的代码,文本框中数字格式为:01 02 03
Dim TestArray() As String = Split(TextBox1.Text)
Dim hexBytes() As Byte
ReDim hexBytes(TestArray.Length - 1)
Dim i As Integer
For i = 0 To TestArray.Length - 1
hexBytes(i) = Val("h"TestArray(i))
Next
SerialPort.Write(hexBytes, 0, hexBytes.Length)
如果有问题可以再联系 。
VB.net串口通讯接收数据写法Do
Application.DoEvents()
Loop Until MSComm1.InBufferCount = 13
Dim a As String = MSComm1.Input
Label1.Caption = a.Substring(1, 9)
Label2.Caption = a.Substring(10, 3)
vb.net 串口接收问题0x3F表示字符"?"
估计是你的发送指令不正确,设备返回你发送的指令后面加''?""
vb.net写个串口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb串口编程实例、vb.net写个串口的信息别忘了在本站进行查找喔 。
推荐阅读
- ios12怎么设置侧边按键,iphone12侧边键设置
- u盘怎么插不进数据线,u盘插不进usb接口
- 运弹游戏动作,运弹药亲子游戏
- 直播pk海报素材,主播pk海报
- php循环修改数据 php循环语句的格式
- 电脑录屏微信直播怎么弄,电脑微信录屏怎么录声音
- 家用固态硬盘怎么换盘,固态硬盘自己怎么换
- .nethtml5登录,用户登录html
- c语言的itoa函数 c语言itoa函数用法