serialPort控件的问题 高手请进我想用com1口接受数据但是不知道怎么实现,谢谢高手帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先对seriport控件进行初始化: serialPort1.Close(); serialPort1 .PortName ="COM1"; serialPort1.BaudRate = 4800; serialPort1.Parity = Parity.Odd; serialPort1.RtsEnable = true; serialPort1.DataBits = 8; serialPort1.ReceivedBytesThreshold = 1; serialPort1.StopBits = StopBits.One; serialPort1.Open();再对sriport的DataReceived进行读取数据格式进行设置: private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { intBytes = serialPort1.BytesToRead; byte[] bytes = new byte[intBytes]; serialPort1.Read(bytes, 0, intBytes); StringBuilder sb = new StringBuilder(bytes.Length * 3); foreach (byte b in bytes ) { sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' ')); } str = sb.ToString().ToUpper() ; dspy_count += 1; if (dspy_count ==15) { dspy_count = 0; this.Invoke(new EventHandler(delegate { ClearText(); })); } this.Invoke(new EventHandler(delegate { SetText(); })); }最后还有两个函数用来清楚文本内容和写入文本内容: private void SetText() { seriport.Text += str; } private void ClearText() { seriport.Text = ""; } 当然了还可以一个字节一个字节的读,自己琢磨了。serialPort1.ReceivedBytesThreshold = 1; 我用1个模拟软件从com2口发送数据,从com1口接受数据我对serialPort初始化 serialPort1.PortName = "com1";//选择串口COM1 serialPort1.BaudRate = 9600;//设置通信口参数 serialPort1.DataBits = 8;//数据位 serialPort1.Parity = Parity.None;//校验位 None serialPort1.StopBits = StopBits.One;//停止位1位 serialPort1.Open();问题1:我从com2发送数据,那com2就是发送缓冲区?从com1接收数据,那com1是接受缓冲区?我是从com1口接受数据吗?问题2:怎么取com2口发送的数据呢? 你从com2发数据,你要想读它发的什么数据,就得从com2读啊,不可能,com2发数据,却从com1读。你要想在一个计算机上读写的话,用一个跳线将串口的2、3针连接。你的计算机有几个串口啊? 有一个com口就完全可以实现数据的收发,没必要用两个口。当然你计算机上com口多也可以分开用工具箱里有serialPort控件拖一个到窗口上就可以,自己写语句定义也成。这个是读取由外围设备发送到计算机上的数据,也就是你说的接收数据:private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { Thread.Sleep(50); byte[] b = new byte[serialPort1.BytesToRead]; serialPort1.Read(b, 0, b.Length); }关于Thread.Sleep(50); 我通过调试,发现这样可以一次性把外设的一条命令读完,否则的话有时候命令会被分割。发送数据的话就是下面的语句 当然具体命令的数据就靠你自己定义了byte[] mingling= { 0x7E, 0x30, 0x31, 0x30, 0x32};serialPort1.Write(mingling, 0, mingling.Length); 找visio二次开发的Demo 在线等,vs2003怎么在page_load()事件中设置IE背景色?? [求助]能推荐本介绍 各个类和方法 的书吗?多谢 请问高手:如何在一个DataGrid中同时显示2张表的内容(附例子,请教解决方案)? 如何求中英文字符串的长度? 求一个解决办法,关于Windows信使的调用!,谢谢大家 运用.NET编写五子棋游戏 谁能帮我把C的程序转换为C#的程序呢?请帮忙,谢谢:) 一个关于刷新后要固定位置的问题(急,在线等!) 跑.net什么样的配子比较好? 急请教:文本框的内容改变的事件 C#中关于数组的使用?
serialPort1.Close();
serialPort1 .PortName ="COM1";
serialPort1.BaudRate = 4800;
serialPort1.Parity = Parity.Odd;
serialPort1.RtsEnable = true;
serialPort1.DataBits = 8;
serialPort1.ReceivedBytesThreshold = 1;
serialPort1.StopBits = StopBits.One;
serialPort1.Open();再对sriport的DataReceived进行读取数据格式进行设置:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
intBytes = serialPort1.BytesToRead;
byte[] bytes = new byte[intBytes];
serialPort1.Read(bytes, 0, intBytes);
StringBuilder sb = new StringBuilder(bytes.Length * 3);
foreach (byte b in bytes )
{
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
}
str = sb.ToString().ToUpper() ;
dspy_count += 1;
if (dspy_count ==15)
{
dspy_count = 0;
this.Invoke(new EventHandler(delegate { ClearText(); }));
}
this.Invoke(new EventHandler(delegate { SetText(); }));
}
最后还有两个函数用来清楚文本内容和写入文本内容:
private void SetText()
{
seriport.Text += str;
}
private void ClearText()
{
seriport.Text = "";
}
我对serialPort初始化 serialPort1.PortName = "com1";//选择串口COM1
serialPort1.BaudRate = 9600;//设置通信口参数
serialPort1.DataBits = 8;//数据位
serialPort1.Parity = Parity.None;//校验位 None
serialPort1.StopBits = StopBits.One;//停止位1位
serialPort1.Open();问题1:
我从com2发送数据,那com2就是发送缓冲区?
从com1接收数据,那com1是接受缓冲区?
我是从com1口接受数据吗?问题2:
怎么取com2口发送的数据呢?
你要想在一个计算机上读写的话,用一个跳线将串口的2、3针连接。
你的计算机有几个串口啊?
工具箱里有serialPort控件拖一个到窗口上就可以,自己写语句定义也成。
这个是读取由外围设备发送到计算机上的数据,也就是你说的接收数据:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
Thread.Sleep(50);
byte[] b = new byte[serialPort1.BytesToRead];
serialPort1.Read(b, 0, b.Length);
}
关于Thread.Sleep(50); 我通过调试,发现这样可以一次性把外设的一条命令读完,否则的话有时候命令会被分割。发送数据的话就是下面的语句 当然具体命令的数据就靠你自己定义了
byte[] mingling= { 0x7E, 0x30, 0x31, 0x30, 0x32};
serialPort1.Write(mingling, 0, mingling.Length);