用户登录
用户注册

分享至

serialport软件 求SerialPort使用方法

  • 作者: 猴子鸡鸡冲啊
  • 来源: 51数据库
  • 2020-04-21

  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使用方法

软件
前端设计
程序设计
Java相关