c#线程中的串口通信

时间:2014-08-12 15:58:35

标签: c# multithreading serial-port

我有一个与SerialPort (UART)一起使用的指纹扫描仪。它有一个MFC库,我在我的项目中导入它并调用它的函数。我用这个库创建了一个单线程程序,它运行得很好 然后我尝试创建一个多线程程序,在这个程序中我有一个名为AddFingerPrint的函数,如下所示:public int AddFingerPrint()
在调用此函数后,如果添加过程成功,则设备将等待手指捕获,返回值是手指的编号。所以我创建了一个程序,当我点击一个按钮时,这个函数将在一个单独的线程中调用,我将手指放在设备上进行捕获(捕获手指后设备指示灯将闪烁)并且返回值是正确的,但是在第一次指纹之后当我再次将手指放在设备上时,灯光会再次闪烁(不点击按钮!如果AddFingerPrint()没有拨打电话,设备永远不会回复电脑!)!所以它就像线程仍在运行并调用AddFingerPrint()函数(但它不是真的,因为线程永远不会再次运行,直到我再次单击该按钮..),程序将在后台再次添加我的手指和没有任何权限,并制作缓冲区!之后我再次点击按钮,我希望设备等待手指,但它没有发生!程序将在AddFingerPrint()之后快速进入下一行,并且该函数从程序缓冲区返回一个值!换句话说,在我的多线程程序中,添加线程将在未经许可的情况下工作并获取更多样本并将其保存在缓冲区中,当我需要采用新样本时,它将在其缓冲区中使用旧样本!为什么C#做到了!?它是一个C#管理,使程序更快,现在有害吗?!或者它是多线程或串口问题?或者你认为我的代码中有错误? (对不起,我不能把我的代码放在一边,因为它非常令人困惑)而且我不得不说指纹设备工作正常在单线程程序中没有问题。谢谢。

0 个答案:

没有答案