我写了个SerialPort接受的例子 SerialPort Sport = new SerialPort(); //SerialPort实例参数的设置
Sport.PortName = "COM1";
Sport.BaudRate = 9600;
Sport.Parity = Parity.None;
Sport.DataBits = 8;
Sport.StopBits = StopBits.One;
Sport.ReadBufferSize = 4096; private void button3_Click(object sender, EventArgs e)
{
//打开串口
if (Sport.IsOpen == false)
{
Sport.Open();
} byte[] bytesSend = System.Text.Encoding.Default.GetBytes("测试");
Sport.Write(bytesSend, 0, bytesSend.Length);
MessageBox.Show("发送串口信息成功");
ReceiveData(Sport);
} //开启接收数据线程
private void ReceiveData(SerialPort serialPort)
{
//异步接收数据线程
Thread threadReceiveSub = new Thread(new ParameterizedThreadStart(AsyReceiveData));
threadReceiveSub.Start(serialPort);
} //异步读取
private void AsyReceiveData(object serialPortobj)
{
SerialPort serialport = (SerialPort)serialPortobj;
//System.Threading.Thread.Sleep(1000);
//MessageBox.Show(serialport.ReadExisting());
MessageBox.Show(serialport.ReadExisting());
serialport.Close();
}我在后面接收的时候,程序弹出的对话框没有数据(就是没接收到数据)
请教哪位有什么问题??
Sport.PortName = "COM1";
Sport.BaudRate = 9600;
Sport.Parity = Parity.None;
Sport.DataBits = 8;
Sport.StopBits = StopBits.One;
Sport.ReadBufferSize = 4096; private void button3_Click(object sender, EventArgs e)
{
//打开串口
if (Sport.IsOpen == false)
{
Sport.Open();
} byte[] bytesSend = System.Text.Encoding.Default.GetBytes("测试");
Sport.Write(bytesSend, 0, bytesSend.Length);
MessageBox.Show("发送串口信息成功");
ReceiveData(Sport);
} //开启接收数据线程
private void ReceiveData(SerialPort serialPort)
{
//异步接收数据线程
Thread threadReceiveSub = new Thread(new ParameterizedThreadStart(AsyReceiveData));
threadReceiveSub.Start(serialPort);
} //异步读取
private void AsyReceiveData(object serialPortobj)
{
SerialPort serialport = (SerialPort)serialPortobj;
//System.Threading.Thread.Sleep(1000);
//MessageBox.Show(serialport.ReadExisting());
MessageBox.Show(serialport.ReadExisting());
serialport.Close();
}我在后面接收的时候,程序弹出的对话框没有数据(就是没接收到数据)
请教哪位有什么问题??
解决方案 »
- 如何根据传递来的参数来控制前台(aspx)显示的内容
- C# asp.net 验证控件怎么验证单选框
- socket通讯中“每个套接字地址(协议/网络地址/端口)只允许使用一次”
- 有什么软件能生成intermec打印机的 IPL文件吗
- 【正则表达式难题3】匹配[sum(tab1.col1 where (col2 = '01' or col3 > 0) and col4 <>'02')]规则的校验!
- 为什么出现“对象引用未指向实例”的异常
- 怎样拦截Console程序的关闭信息
- 求C#例程:如何实现闪现窗体以及彩蛋问题的实现?
- 高分求救!!!C# 在POCKET PC 中如何录音?以及播放midi
- WebForm 中如何在DataGrid中选中一行,并获得此纪录?谢谢!
- c# 如何实现数组的部分复制
- 实体类来传递存储过程output参数
byte[] data = new byte[port.BytesToRead];// port.Read(data, 0, data.Length); 其实你如果测试可以直接,响应这个DataReceived事件来完成
呵呵,楼主为什么不用串口的消息触发事件呢?
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (sender.GetType() != typeof(System.IO.Ports.SerialPort))
{
return;
}
try
{
//调用委托处理收到的数据.
this.Invoke(new EventHandler(AddReceive));
}
你说的对,那如果我要show下面这个测试数据
“byte[] bytesSend = System.Text.Encoding.Default.GetBytes("测试");”
我在最后那个读该怎么读呢?
这个代码写了以后,程序没跑到这里来
晕了。代表COM1端口根本没接受到数据