请教串口通讯DataReceived事件不触发的问题

sunxinyu 2009-12-01 11:49:26
VB2005的 一个自发自收的程序,串口2和3短接。运行程序后,第一次连接、打开串口后,收发正常。再发送,能看到BytesToRead随着发送次数增长,但不能触发DataReceived事件。关闭串口再打开,则能再正常收发一次,后续收发不正常,直到重新关闭打开串口。不知道为什么。盼高人指点,下面是源程序,谢谢。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Sp.Write(txtBox1.Text)
End Sub


Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP.DataReceived
Me.Invoke(New EventHandler(AddressOf Sp_Receiving))
End Sub


Private Sub Sp_Receiving(ByVal sender As Object, ByVal e As EventArgs)
Dim strIncoming As String
strIncoming = Sp.ReadLine.ToString 'Sp.ReadExisting.ToString
Sp.DiscardInBuffer()
TexMes.Text = strIncoming

End Sub
...全文
691 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunxinyu 2010-10-13
  • 打赏
  • 举报
回复
就是不停地打开关闭实现的。好在数据量不是很大。连续跑几天不成问题。 3月份从北京到上海,这个项目就没跟了,再后来听他们说ARM板子的串口硬件有问题。不及得怎么说的了。呵呵。

我是2005 + ARM9 + Wince6。
tony0121 2010-10-11
  • 打赏
  • 举报
回复
相同的问题 我用的c# 貌似datareceived事件触发有问题。
yjmeina 2010-05-31
  • 打赏
  • 举报
回复
有同样的问题,不知道有没有解决办法
YuanFeng_024 2010-05-27
  • 打赏
  • 举报
回复
问题解决了吗?是什么原因?用的是什么方法?我今天也遇到了问题。
airskys 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunxinyu 的回复:]

用本办法解决了。如下: (加了关闭和重新打开)。但觉得没解决根本问题,希望高人能够彻底解决。分数不够就再加。多谢了。

Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP.DataReceived
……
[/Quote]

你的这个问题有没有解决呢
我也碰到了和你同样的问题
你的也是arm下用vs2005开发的嘛?
KissXYL 2009-12-03
  • 打赏
  • 举报
回复
按你那样接收数据,估计不要100%负载,效率要能达到20%就把cpu塞死了。
KissXYL 2009-12-03
  • 打赏
  • 举报
回复
已经做了个例子发给你了。查收邮件。
suntory976806 2009-12-03
  • 打赏
  • 举报
回复
windows可以,CE不行,没有思路,帮顶~~~~~~~~~~~~~~~
CE的串口是否 全双工 方式工作?
sunxinyu 2009-12-02
  • 打赏
  • 举报
回复
用本办法解决了。如下: (加了关闭和重新打开)。但觉得没解决根本问题,希望高人能够彻底解决。分数不够就再加。多谢了。

Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP.DataReceived
Me.Invoke(New EventHandler(AddressOf Sp_Receiving))
Sp.Close()
While Sp.IsOpen = True
End While
Sp.Open()
While Sp.IsOpen = False
End While
End Sub
sunxinyu 2009-12-02
  • 打赏
  • 举报
回复
期待高人出现
the_else 2009-12-02
  • 打赏
  • 举报
回复
做过windows mobile的,没有搞过CE
sunxinyu 2009-12-02
  • 打赏
  • 举报
回复
在windows平台没问题,建立WinCE智能设备工程、下到板子里运行会出现我所描述的情形。 非常感谢楼上的各位,希望大家都来帮忙寻思寻思。谢谢~~

flyerwing 2009-12-02
  • 打赏
  • 举报
回复
偶看VB跟看天书一样
the_else 2009-12-02
  • 打赏
  • 举报
回复
我怎么没遇到?1。端口是否打开?2.ReceivedBytesThreshold是否设置?3.你没短接2-3
KissXYL 2009-12-02
  • 打赏
  • 举报
回复
程序发到我邮箱。
wuyazhe@yeah.net

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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