求教, 串口实时通信,是windows自身的原因,还是.net的原因??

dreamsyeah 2006-03-22 07:21:07
我用C#做了个串口实时通信,与单片机通信,在后台运行,是一个独立的winform的exe文件,名为a.exe
另有一个主程序作为用户界面数据的显示,是另一个独立的exe文件,名为b.exe。
现在遇到这样一个问题:
在调试时a.exe的winform是显示着的,用于查看数据是否正确,可是鼠标按着a.exe的标题栏移动窗体时,a.exe中提示串口数据校验出错,后来我同时运行其他的程序,a.exe也会出现校验出错的问题。
我猜测这主要是windows操作系统自身的实时性问题,现在这个问题怎么解决,请各位有经验的大侠帮忙,感激不尽!!!
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamsyeah 2006-03-24
  • 打赏
  • 举报
回复
我用的是485转换器与单片机通讯 的,
dreamsyeah 2006-03-23
  • 打赏
  • 举报
回复
我用的是xp操作系统,我打听了一下,好像说win98和 2003不会出现这种问题,是不是这样的啊?
dreamsyeah 2006-03-23
  • 打赏
  • 举报
回复
'设置串口
Private Function PrepareSendCmd() As Boolean
Try
With MsComm
If .PortOpen = True Then
.PortOpen = False
End If
.CommPort = commPort
.Settings = "19200, E, 8, 2"
.InputMode = MSCommLib.InputModeConstants.comInputModeBinary
.RThreshold = 1
.InBufferSize = 2048
.OutBufferSize = 2048
.InBufferCount = 0
.OutBufferCount = 0
'.InputLen = 2
'.EOFEnable = True
.PortOpen = True
Return .PortOpen
End With
Catch ex As Exception
MessageBox.Show("'PrepareSendCmd" & ex.Message)
Return False
End Try
End Function



Private Sub MsComm_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MsComm.OnComm
Try
If MsComm.CommEvent = MSCommLib.CommEventConstants.comEventRxParity Then
revLst.Clear()
Array.Clear(revData, 0, revData.Length)
revData(0) = EOC
QueryProcess()
DispInf("Parity error.")

ElseIf MsComm.CommEvent = comEvReceive Then
Dim b() As Byte = MsComm.Input
Dim bRev As Boolean = True
If Array.IndexOf(b, EOC) = -1 Then
bRev = False
End If
revLst.AddRange(b)
If bRev = True Then
If revLst.Count > 20 Then
revLst.Clear()
Array.Clear(revData, 0, revData.Length)
revData(0) = EOC
Else
revLst.CopyTo(revData)
revLst.Clear()
End If
QueryProcess()
End If
End If
Catch ex As Exception
MessageBox.Show("MsComm_OnComm " & ex.Message)
End Try
End Sub

Wenking003 2006-03-23
  • 打赏
  • 举报
回复
把程序贴上来,让大家看看。
lunice 2006-03-22
  • 打赏
  • 举报
回复
我也在做与单片机通信的上位机监控程序,倒没遇到这种问题。可能工作机制不一样吧。
有空交流交流,QQ:257224
shuiboit 2006-03-22
  • 打赏
  • 举报
回复
请将你的程序发给我,shuiboit@126.com
我用VB ,C#专门编写串口程序,别忘了将你的通讯协议发给我
你用了什么通讯类,MSCommLIb控件 或SerialPort类

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧