串口通信

LIMINLY520 2011-07-01 09:24:06
在vs2008 C# 窗体
在代码的运行状态中,想要向串口发送指令,并等待串口的回复
然后在继续下面的代码
这要怎样实现
...全文
131 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangqiujia111111 2011-07-02
  • 打赏
  • 举报
回复
上面发错了,我后来改过了。。。
发送:
byte[] data = System.Text.Encoding.UTF8.GetBytes(this.textBox1.Text);
serialPort1.Write(data, 0,data.Length);
huangqiujia111111 2011-07-02
  • 打赏
  • 举报
回复
用这个SerialNull软件建两个虚拟连接的串口,然后建两个工程。模拟下就很清楚了。
发送:
/*byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
   string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);*/

接收:/*byte[] data = new byte[serialPort1.BytesToRead];

serialPort1.Read(data, 0, serialPort1.BytesToRead);

textBox2.Text = Encoding.UTF8.GetString(data);*/
LIMINLY520 2011-07-02
  • 打赏
  • 举报
回复
如果是在有虚拟串口的情况下,是否也是和网上写的那些串口通信一样的啊
这个是我的一个疑惑
LIMINLY520 2011-07-02
  • 打赏
  • 举报
回复
感谢大家那么耐心的教我
谢谢啊
doubleu2005 2011-07-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liminly520 的回复:]

如果是在有虚拟串口的情况下,是否也是和网上写的那些串口通信一样的啊
这个是我的一个疑惑
[/Quote]
是一样的,不用疑惑
criedshy 2011-07-01
  • 打赏
  • 举报
回复
同步的最容易写了,MSDN上应该有例子吧
无常名 2011-07-01
  • 打赏
  • 举报
回复
百度一下串口通信 有的是例子。
bdmh 2011-07-01
  • 打赏
  • 举报
回复
SerialPort,自己好好看看帮助
logan2009 2011-07-01
  • 打赏
  • 举报
回复

using System;
using System.IO.Ports;
using System.Text;
using System.Threading;

namespace ConfigHelper
{
/// <summary>
/// 串口控制类
/// </summary>
public class SimpleCommand
{
private SerialPort port;

private StringBuilder builder = new StringBuilder();//避免在事件处理方法中反复的创建,定义到外面。
private string _getString = "";
public string Builder
{
get { return _getString; }
}
/// <summary>
/// 初始化并打开串口
/// </summary>
/// <param name="portNum">端口名称</param>
/// <param name="baudRate">波特率</param>
/// <param name="parity">Parity奇偶校正设置</param>
/// <param name="dataBits">数据位</param>
/// <param name="stopBits">停止位初始化 SerialPort 类的新实例</param>
public SimpleCommand(string portNum, int baudRate, Parity parity, int dataBits, StopBits stopBits)
{
port = new SerialPort(portNum, baudRate, parity, dataBits, stopBits);
try
{
port.Open();
}
catch (System.Exception)
{
return;
}
port.DataReceived += comm_DataReceived;
}
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = port.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
port.Read(buf, 0, n);//读取缓冲数据
builder.Clear();//清除字符串构造器的内容
builder.Append(Encoding.ASCII.GetString(buf));
_getString += builder.ToString();
}
public void Write(string _pStr)
{
try
{
_getString = "";
port.Write(_pStr);
}
catch { }
Thread.Sleep(100);
}
/// <summary>
/// 向串口写入一个值 格式固定
/// </summary>
/// <param name="num">端口</param>
public void Open(int num, int inport)
{
if (port.IsOpen)
{
port.WriteLine(string.Format("O(00,{0},1)",num.ToString("000")));
}
}
/// <summary>
/// 向串口写入一个值 格式固定
/// </summary>
/// <param name="num">端口</param>
public void Close(int num, int inport)
{
if (port.IsOpen)
{
port.WriteLine(string.Format("O({0},{1},0)", inport.ToString("00"), num.ToString("000")));
}
}

public void CloseAll(int inport)
{
if (port.IsOpen)
{
port.WriteLine(string.Format("O({0},000,0)", inport.ToString("000")));
}
}

}
}

flyerwing 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
SerialPort,自己好好看看帮助
[/Quote]
这个控件比较好用的,看看文档就行了.
woaifeixiong 2011-07-01
  • 打赏
  • 举报
回复
SerialPort serialPort2 = new SerialPort();
serialPort2.PortName = "COM1";
serialPort2.BaudRate = 2400;
serialPort2.Open();
serialPort2.WriteLine(Convert.ToString(this.textBox4.Text.Trim()));
serialPort2.WriteLine("\f");
serialPort2.Close();
兔子-顾问 2011-07-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/wuyazhe/category/695097.aspx
lovetsfuer 2011-07-01
  • 打赏
  • 举报
回复
http://www.cnblogs.com/tuyile006/archive/2006/09/29/517882.html
你看看这个例子,还是比较容易理解的
dddd235 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liminly520 的回复:]

可是我是在使用虚拟串口的前提下,使用串口通信的
这会不会有影响的啊
而且网上的很多例子我都看过了啊
感觉和我现在写的那个不一样的啊
所以我才想问看看的
有没有什么简单的例子的啊
[/Quote]

怎么个不一样
也就同步 异步两种处理方式
LIMINLY520 2011-07-01
  • 打赏
  • 举报
回复
可是我是在使用虚拟串口的前提下,使用串口通信的
这会不会有影响的啊
而且网上的很多例子我都看过了啊
感觉和我现在写的那个不一样的啊
所以我才想问看看的
有没有什么简单的例子的啊

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧