我正在用C#开发一个PC WinForms应用程序,需要稍后连接到微控制器.目前,出于测试目的,我在计算机上创建了一个虚拟零调制解调器,并将其与终端程序相关联.
我正在使用的虚拟零调制解调器是"com0com":http://sourceforge.net/projects/com0com/
以下是COM端口对设置的屏幕截图:

在我的应用程序中,我使用该组件serialPort.这就是serialPort的设置方式:
public bool SerialPortSetup(String cp)
{
String port = cp;
int baud = 19200;
Parity parity = Parity.None;
int databit = 8;
StopBits stopbit = StopBits.One;
try
{
// Initialize serial port
serialPort1 = new SerialPort(port, baud, parity, databit, stopbit);
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPortDataReceived);
serialPort1.Open();
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
serialPort的其他属性:

我连接到COM2的终端程序设置了相同的波特率,奇偶校验,数据位,停止位等.当我将自己的应用程序连接到COM1,终端连接到COM2时,一切正常.双向书写和阅读.
但是,当我不使用COM2端口(即终端程序未打开)时,我的应用程序挂起了我开始使用的第二个serialPort1.Write(str),其中str只是一个随机字符串.从Visual Studio运行我的应用程序时,我只能通过停止调试来关闭它.它不像Windows标记为"没有响应".顺便说一句,我总是在写入之前检查一个打开的serialPort.
我需要这个问题才能消失.想法?
我知道这个问题有点偏旧,但我在寻找同一问题的解决方案时遇到过这个问题.
您需要更改com0com中的几个设置,这些设置在http://www.magsys.co.uk/comcap/onlinehelp/null_modem_emulator_com0com.htm中描述.
简而言之,您需要为接收端口启用缓冲区溢出,并在发送端口上启用波特率仿真.使用OP图像中的对话框很简单.
| 归档时间: |
|
| 查看次数: |
5568 次 |
| 最近记录: |