2012-04-21 25 views
0

我有一个任务,我需要通过串口调制解调器加载一些数据,如user (pouzivatel)和一些int(stav odberu),并将其存储在我的本地数据库中。我知道如何加载数据,通过串口发送数据,但我需要在图像上的结构中进行。C#使用自己的协议在2台PC之间通过串行端口发送数据

evisualisation

首先,我拨打与AT命令的设备的电话号码,顺便说一句,这是工作,但我现在不知道该怎么停下来等待SOH+adresa objektu(SOH +约地址一些字符串)。然后发送有关确认(ACK)的数据并等待新数据出现。

等待顺序是我最大的问题。如何停止并等待收到的数据。

+1

那么,做一个阻塞读取调用或使用一个包装组件,在数据rx上触发一个事件。 C#Toolbox中默认有一个串行组件。它肯定有一个'DataReceived'事件,如果你愿意的话,可能会有一些你可以在线程中调用的阻塞方法。 – 2012-04-21 13:31:11

+0

或者只是不要等待并使用DataReceived事件。 – 2012-04-21 14:01:50

+0

C#有一个我使用的串行组件。我可以读取端口上的数据并将它们显示在文本框中,这很容易,但我不知道如何对上面的图片进行编程。我使用接收到的数据处理器 private static void DataReceivedHandler( object sender, SerialDataReceivedEventArgs e) SerialPort sp =(SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine(“Data Received:”); Console.Write(indata); } – MichalCh 2012-04-22 20:05:53

回答

0

使用该组件并利用其DataReceived事件检索作为评论建议可能会解决你的问题很容易和有效。但是你可能一直在寻找更低级别的东西来自己做。

如果你想/需要做在线,没有任何花哨的基于事件的系统,该系统会假设你已经在一些基于消息队列环境一样的WinForms,你可以做这样的事情。

while (true) 
{ 
    // check for new data 
    ... 
    // if you got some, respond to it 
    ... 

    if (someConditionThatTellsYouYouAreDoneOrSupposedToTerminate) break; 

    System.Threading.Thread.Sleep(50); 
}