多线程发送,接收串口数据
目前多线程接收,解析数据处理好了,但用多线程发送数据时数据出了问题,一是有些指令没有数据返回,二是线程执行顺序是错了,我是用c#.NET 线程池处理的
小弟想实现这样的功能,用多线程发送数据,多线程接收数据,多线程解析数据,保证实时读取串口接收的数据。可下面贴出来的这些方法没有实现要的功能,琢磨了快一个星期了,希望各位大哥指教,能给好的指导思想,有串口多线程发送,接收的项目例子更好。
/// <summary>
/// 发送多条指令,用异步的方式接收数据
/// </summary>
/// <param name="vData">发送的数据和读取返回的数据)</param>
/// <param name="IsReturn">true 读取返回的数据 false 不返回数据)</param>
/// <returns></returns>
public bool SendData(string[] cmd, string tagData, bool fag)
{
DateTime a1 = DateTime.Now;
//for (int i = 0; i < 1000; i++)
//{
foreach (string s in cmd)
{
if (s == string.Empty || tagData == string.Empty)
return false;
if (!serialState)
this.InitPortCom();
tab = parms.PtlParms(s);
if (tab == null || tab.Rows.Count == 0)
return false;
DataRow frameData = tab.Select(string.Format("type='{0}' and name='{1}' ", "Output", "命令长度"))[0];
int frameLen = Convert.ToInt32(basefun.valtag(frameData["pms"].ToString(), "{命令长度}")) * 2 + 12;
byte[] buffData = analy.SetPtlData(tab, tagData);
serialPort.Write(buffData, 0, buffData.Length);
this.WaiteSendData(new SendTaskInfo(buffData, s));
this.WaiteReceiveData(new ReceiveTaskInfo(s, frameLen));
this.WaitAnalysisData(new ReceiveTaskInfo(s, frameLen));
&n