[英]C# Visual Studio console serial interface
我从头开始,尝试编写一个简单的控制台以与Windows 7计算机上的串行端口接口。
我在用:
码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
namespace ConsoleApplication1
{
class Program
{
public static void Main()
{
SerialPort mySerialPort = new SerialPort("COM5");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
mySerialPort.Write("This is a test");
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(
object sender,
SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.Write(indata);
}
}
}
到目前为止,我已经运行了此代码并与连接到我的计算机的xbee模块进行了接口。 该xbee模块将串行数据发送到连接到msp430的另一个xbee。 对msp430进行编程,以接收其接收的所有内容并将其回显。 这适用于我的代码。 在我的控制台中,我将得到“这是一个测试”回显到控制台窗口的信息。
我遇到的问题是当我使用虚拟串行连接到腻子窗口时。 我正在使用它来尝试简化开发,而不必一直使用硬件。 我将使用HHD Free Virtual Serial Ports创建两个串行端口之间的桥接连接。 我将一个连接到腻子终端,另一个连接到我的控制台程序。 运行程序时,我收到错误消息。
“ System.dll中发生了'System.TimeoutException'类型的第一次机会异常”
在线上
mySerialPort.Write(“这是一个测试”);
但是“这是测试”将出现在Putty终端上。 如果删除“ mySerialPort.Write(“这是一个测试”);“ 行并尝试将数据从Putty窗口发送到控制台窗口,则什么也没有出现。
同样,这也可以与我的硬件解决方案配合使用。
请帮助,我将尽力澄清任何问题。 再次感谢你。
我猜问题出在您使用的虚拟实用程序中。 似乎将引脚状态设置为不正确。 如果我使用2个腻子实例并连接到桥接端口,则会看到输入的符号无限发送。 所以我认为您的代码很好。
在执行此类任务时,我使用了一条特殊的电缆来连接2个硬件com端口(com1和com2,如果没有它们,则可以尝试USB到COM转换器),并且工作正常。
我在HHD Free Virtual Serial Ports上也遇到了同样的问题,但这在异步写入操作中效果很好。
您也可以更换
mySerialPort.Write("This is a test");
与(例如)
var buffer = Encoding.ASCII.GetBytes("This is a test");
mySerialPort.BaseStream.BeginWrite(buffer, 0, buffer.Length, ar => mySerialPort.BaseStream.EndWrite(ar), new object());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.