日期:2014-05-18  浏览次数:20931 次

串口通信问题(接受不到数据)
前台我放了一个SerialPort控件 id是sp1;
还放了一个按钮,id是button1
button1点击事件是:
 
C# code

try
        {
                sp1.ReadTimeout = 3000;
                sp1.PortName="com1";
                sp1.BaudRate=9600;
                sp1.DataBits=8;
                sp1.Open();
                tb_data.Text = sp1.IsOpen.ToString();
                string temp=sp1.ReadLine();
                sp1.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }



我用另一台仪器通过com1传数据近来,怎么传不进来啊??提示错误超时(sp1.IsOpen()的值是true)

我郁闷了

当我在button1的事件里把接受改为发送的时候
string temp=sp1.ReadLine(); 换成 sp1.Write("fly") 
仪器那边有反应

这是怎么回事呀?

------解决方案--------------------
改用串口的接收事件处理。
------解决方案--------------------
探讨

引用:
改用串口的接收事件处理。


我用了接受事件

private void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
MessageBox.Show("hello");
tb_data……

------解决方案--------------------
这样吧你先将自己的串口2,3脚短接起来如果接收正常然后再去调试外部设备吧
------解决方案--------------------
嘻嘻 我也正研发这块呢 实现早在去年已经完成了 集成阶段也完了 就差需求(业务逻辑)了
------解决方案--------------------
注册这个事件DataReceived
------解决方案--------------------
探讨
引用:
改用串口的接收事件处理。


我用了接受事件

private void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
MessageBox.Show("hello");
tb_data.Text= e.ToString();
sp1……

------解决方案--------------------
你连接外部设备前,你确认的设备和你电脑上的串口是能通吗?用调试工具试过有数据回来没。
还有你设备波特率是不是和你代码中设置的一样。