偶尔,我的一些集成测试会因上述消息而失败。我正在使用下面的代码来准备端口。for(inti=0;i我的假设是,因为它不可能是当前线程阻塞端口(因为它会尝试关闭它),所以它一定是另一个线程或进程在没有正确清理的情况下死亡(其他测试之一-没有其他访问此端口)。有没有办法重置SerialPort的状态,以便新线程/进程可以再次访问它?谢谢,理查德 最佳答案 这是SerialPort类中的一个缺陷,它使用内部辅助线程来等待端口上的事件。DataReceived、PinChanged和ErrorReceived事件的来源。该缺陷存在于Clos
我有一个C#windows窗体应用程序,它通过COM端口与USBdongle通信。我使用.Net2.0中的SerialPort类进行通信,并且串行端口对象在应用程序的生命周期内处于打开状态。应用程序向设备发送命令,也可以从设备接收未经请求的数据。我的问题发生在窗体关闭时-我在尝试关闭COM端口时(不幸的是随机地)得到一个ObjectDisposedException。这是Windows堆栈跟踪:System.ObjectDisposedExceptionwasunhandledMessage=SafehandlehasbeenclosedSource=SystemObjectName=
我编写了一个.net4.0控制台应用程序,它定期与GSM调制解调器对话以获取收到的SMS消息的列表(它是一个USB调制解调器,但代码通过串行端口驱动程序连接到它并发送AT命令-顺便说一句,它是SierraWireless调制解调器,但我无法更改它,而且我有最新的驱动程序)。发生的事情是在一段时间后(可能是几小时,也许是几天)它就停止工作了。这是一个日志片段...2012-04-1723:07:31DEBUGModemCheck(108)-ExecutingATcommand'AT+CPMS="ME"'...2012-04-1723:07:31DEBUGModemCheck(108)-F
我试过使用Readline()并且数据被丢弃,我尝试使用Read()但我不确定如何使用防错方法来做到这一点,因为我可能会一个接一个地收到几个数据包,但我没有知道会有另一个数据包进来的方法。在数据包之间BytesToRead是0,所以我不能使用它。将数据读取到缓冲区时,您有计时器或让线程休眠以允许所有数据包到达?我迷路了。不知道接下来要尝试什么。我应该提一下,我不能保证从串行端口出来的字符串将以\n或\r或\r\n结尾。我只需要一种万无一失的方法来读取当用户按下PRINT时来自秤的所有数据包。有人在这里回答了我喜欢的想法-等待所有数据包的一定时间,但他们删除了他们的回答。您有机会重新发布
这是从串口读取数据的代码。为了简单起见,让我们通过单击按钮来完成;privateSystem.IO.Ports.SerialPortserialPort;privatevoidbutton1_Click(objectsender,EventArgse){if(serialPort==null)serialPort=newSerialPort("COM7",4800,Parity.None,8,StopBits.One);//COM7ishardcodedjustforthesakeofexampleif(!serialPort.IsOpen)serialPort.Open();text
有没有办法找出特定的所有可用波特率系统支持通过C#?这可以通过设备管理器-->端口获得但我想以编程方式列出这些。 最佳答案 我找到了几种方法来做到这一点。以下两个文件是起点http://support.microsoft.com/default.aspx/kb/99026http://msdn.microsoft.com/en-us/library/aa363189(VS.85).aspx线索在第一个文档的以下段落中Thesimplestwaytodeterminewhatbaudratesareavailableonapartic
我的公司开发了一种设备,它使用虚拟COM端口通过蓝牙与PC通信。现在我们需要用户先将设备与PC(MSWindows操作系统)配对,然后在我们的应用程序中手动输入它的com端口号(我敢打赌95%的用户会在这个任务上失败)。所以我希望我的应用程序向用户显示配对蓝牙设备的列表(它们的“友好名称”列表),然后我想自动找出所选设备的COM端口号。我怎样才能在C#中做到这一点?(不依赖于已安装的蓝牙堆栈的解决方案值得赞赏)。提前致谢。 最佳答案 在Widcommbluetooth:howtoopenthevirtualCOM查看我的回答根据我对
我正在用Java编写一个小应用程序来读取COM端口,因为我们使用64位系统,所以我不得不使用RXTX。问题是当我尝试运行我的应用程序时出现以下错误:"Error0x5at..\rxtx\src\termios.c(892):AccessDenied"尝试了我的代码以及code来自RXTX网站,有人以前有过这方面的经验吗?这是我的代码:importgnu.io.CommPort;importgnu.io.CommPortIdentifier;importgnu.io.SerialPort;importgnu.io.SerialPortEvent;importgnu.io.SerialPo
我正在尝试设置java-arduino串行通信。到目前为止,我从Arduino页面(http://playground.arduino.cc/interfacing/java)下载了代码,但出现错误。代码:importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.OutputStream;importgnu.io.CommPortIdentifier;importgnu.io.SerialPort;importgnu.io.SerialPortEvent;importgnu.io.SerialP
如何使用jssc(java-simple-serial-connector)获取串口的设备描述符?getPortName()方法提供端口名称(例如COM2),但描述符会更有帮助。如果需要修补此开源API以获取设备描述符,该怎么做? 最佳答案 看gohai/java-simple-serial-connector,SerialPortList类有一个getPortProperties(StringportName)获取端口属性的方法,遗憾的是尚未为Windows实现,但很容易实现并再次重新编译以使其工作。希望对您有所帮助。