serial port,即串行端口,现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越普遍。例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据 传输到另一台计算机上,那么利用串口通信就可以实现。运行本程序,在“发送数据”文本框中输入要传送的数据,单击【发送】按钮,将传送的数据发送到所选择 的端口号中;单击【接收】按钮,传递的数据被接收到“接收数据”文本框中。
实现过程:
(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。
(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。
(3)主要程序代码。
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!","系统提示");
}
private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("数据接收成功!","系统提示");
}
相关技术:
现在微软推出了最新版本的 Visual Studio 2008 开发工具,可以不再采 用第三方控件的方法来设计串口通讯程序。NET Framework 2.0 类库包含了 SerialPort 类,方便地实现了所需要串口通讯的多种功能, 可以实现MSComm 编程方法快速转换到以 SerialPort 类为核心的串口通讯。
c# serialport传送
直接转成byte数组就可以发了、
具体说说好吗?我用的b1 = System.BitConverter.GetBytes(f1),serialport.write(b1,0,4),可是收到的是乱码啊。而且老师也说这样不对,他说我要发送的是binary,不是text。我就不了解这个binary到底指什么,我换成0和1那种形式他也说不对
C# 监听com接口 可以用serialport 给点代码
新建 Form 添加 Form_Load 事件,粘贴下面的代码到事件中
// 定义 SerialPort 新实例,并初始化属性
// 除 PortName、Handshake 外,其它指定的都是默认属性,可以不写
var sp = new System.IO.Ports.SerialPort()
{
PortName = "COM1",
BaudRate = 9600,
DataBits = 8,
Handshake = System.IO.Ports.Handshake.RequestToSendXOnXOff,
Parity = System.IO.Ports.Parity.None,
StopBits = System.IO.Ports.StopBits.One
};
try
{
sp.Open();
sp.DataReceived += (obj, args) =>
{
var buffer = new byte[sp.BytesToRead];
sp.Read(buffer, 0, buffer.Length);
Console.WriteLine(BitConverter.ToString(buffer));
// 如果要在控件中显示数据,需要另外定义事件代理并使用 this.Invoke
// 否则会提示跨线程异常的错误
};
// 关闭 Form 时,检测端口是否处于打开状态并将其关闭。
this.FormClosing += (obj, args) =>
{
if (sp.IsOpen) sp.Close();
};
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
谢谢你 你能帮我看一下吗? 我应该怎么读取 有点迷茫
上面那个表里面不是已经写明白了吗
buffer 不是一个 byte[] 数组吗
byte[0] = 0x02
byte[1] = +/-
byte[2] - byte[7] 为数据 至于高低位 自己写个函数转下就可以了
byte[8] 是告诉你小数点要往左移动几位
byte[9] 校验数据是不是完整
如何通过SerialPort读取和写入设备COM端口数据
SerialPort中串口数据的读取与写入有较大的不同。由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读龋一、线程实时读串口;二、事件触发方式实现。由于线程实时读串口的效率不是十分高效,因此比较好的方法是事件触发的方式
请问 用C# serialPort 怎么接收 地磅传上来的 数据呀,有没大神给个例子,谢谢
这个控件的事件里面有个数据接收,每次有数据流入都会触发,你可以在那里面写上写一些接收数据的代码。然后在处理数据,要注意的是,这个接收动作是在别的线程上完成的,所以不能直接在主线程显示。那样是不安全的。需要调用委托才可以。我会的也不多,你参考下我的代码吧。
private void serialPortB_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[200];
int length = serialPortB.Read(data, 0, 200);
string Read = Encoding.Default.GetString(data, 0, length);
W_Reveive(Read);
}
private void W_Reveive(string text)//这里调用了一个委托,这样就可以在主线程刷新数据了
{
if (this.textBox1.InvokeRequired)
{ D_power d = new D_power(W_Reveive);
this.Invoke(d, new object[] { text });
}
else
{
Scane(text);//这个函数是最后实际处理数据的,此次可以设置为显示数据。
}
}
有没有c#常用类使用指导的书,包括程序例子 比如serialport pictureBox Graphic这些类的使用等
这个上微软网站、MSDN比翻书快吧,搜索起来也方便一些
我知道 我也常在里面差一些类的使用 不过有时候没有电脑或者没有网的时候感觉有本书会方便一些
那你上书店找找,我记得有专门的类库的书,一般叫参考大全什么的
Serialport类:出现“由于线程退出或应用程序请求,已放弃I/O操作”的警告,请问要怎么解决啊,谢谢了
应该是你没用处理好端口关闭和端口状态判断。
具体要自己看程序,应该是代码逻辑不完整的问题,如果有线程抛出,要在等待线程消息返回后再关闭端口,或者,在县城中处理端口关闭。
转载请注明出处51数据库 » serialport软件 求SerialPort使用方法
猴子鸡鸡冲啊