C#的serialPort已经打开,但是接收不到数据??

dzone12345 2017-11-24 11:01:23
使用C#的serialPort控件串口通信,单独做个小的测试程序,用串口助手调试,接收发送都没有问题,但是把这个功能放到我要编写的大程序里就只可以打开串口,不能接收到数据,请问这个是怎么回事,怎么解决呢?
...全文
1008 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
易2017 2017-11-27
  • 打赏
  • 举报
回复
引用 19 楼 dzone12345 的回复:
serialPort控件如何就叫绑定了serialPort1_DataReceived事件呢?

看你的serialPort控件,点中右键属性,右侧属性栏上方有个闪电图标,看DataReceived有没有绑定函数,没有你双击一下生成
最好你要学会用代码写seriaPort
dzone12345 2017-11-27
  • 打赏
  • 举报
回复
serialPort控件如何就叫绑定了serialPort1_DataReceived事件呢?
混QWER 2017-11-27
  • 打赏
  • 举报
回复
引用 17 楼 dzone12345 的回复:
这个什么意思呢 [quote=引用 16 楼 qwertywhb 的回复:]

Port1.ErrorReceived += new SerialErrorReceivedEventHandler(DevicePortError_DataReceived);
  private void DevicePortError_DataReceived(object sender, SerialErrorReceivedEventArgs e)
        {

      }
[/quote]serialPort控件注册serialPort1_DataReceived事件没收到数据,那你注册一个接收错误的事件看是否进去了。
dzone12345 2017-11-27
  • 打赏
  • 举报
回复
这个什么意思呢
引用 16 楼 qwertywhb 的回复:

Port1.ErrorReceived += new SerialErrorReceivedEventHandler(DevicePortError_DataReceived);
  private void DevicePortError_DataReceived(object sender, SerialErrorReceivedEventArgs e)
        {

      }
混QWER 2017-11-27
  • 打赏
  • 举报
回复

Port1.ErrorReceived += new SerialErrorReceivedEventHandler(DevicePortError_DataReceived);
  private void DevicePortError_DataReceived(object sender, SerialErrorReceivedEventArgs e)
        {

      }
dzone12345 2017-11-27
  • 打赏
  • 举报
回复
怎么看两个程序的.net framework版本一致吗?
  • 打赏
  • 举报
回复
两个程序的.net framework版本一致吗?有没有可能出现不兼容的问题 还有就是serialPort控件绑定serialPort1_DataReceived事件了吗?
易2017 2017-11-25
  • 打赏
  • 举报
回复
引用 13 楼 she6600 的回复:
两个程序的.net framework版本一致吗?有没有可能出现不兼容的问题 还有就是serialPort控件绑定serialPort1_DataReceived事件了吗?
我觉得也是这个问题,他还不明白怎么写或者怎么使用serialPart控件
圣殿骑士18 2017-11-24
  • 打赏
  • 举报
回复
你这个代码是小程序里的还是大程序里的?两者有没有微小差异?描述问题要清楚。
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { int n = serialPort1.BytesToRead; byte[] buf = new byte[n]; received_count += n; serialPort1.Read(buf, 0, n); builder.Clear(); this.Invoke((EventHandler)(delegate { //直接按ASCII规则转换成字符串 builder.Append(Encoding.ASCII.GetString(buf)); //} //追加的形式添加到文本框末端,并滚动到最后。 tB1.AppendText(builder.ToString()); series.Points.AddY(builder.ToString()); //修改接收计数 //label1.Text = "Get:" + received_count.ToString(); })); } 这是接收程序
易2017 2017-11-24
  • 打赏
  • 举报
回复
上代码,不上代码谁知道你问题在哪
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
波特率,数据位,停止位,校验位,串口号都设的没有错误,小程序跑过了,没有问题,把代码加入到大程序里,就没有就收到
白三儿 2017-11-24
  • 打赏
  • 举报
回复
波特率,数据位,停止位,校验位,串口号都设对了?加断点跑
  • 打赏
  • 举报
回复
还是使用方法的问题,大程序小程序应该是一样的。。。
易2017 2017-11-24
  • 打赏
  • 举报
回复
把问题描述清晰点,先彻底搞懂怎么利用串口通信
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
同样的代码复制到另一个项目里问啥就不对了你呢
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
小程序测试完全好用的啊,怎么复制过来就不好了呢,
_jiasong 2017-11-24
  • 打赏
  • 举报
回复
数据接收没有问题,看是不是数据保存的时候线程间操作导致数据没有传达,这种问题打断点一步步执行看数据走到哪丢失的就很好解决。
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
大程序是在tabcontrl的其中一个选项卡下的textbox1
dzone12345 2017-11-24
  • 打赏
  • 举报
回复
直接拷贝过去的

111,098

社区成员

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

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

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