C#串口通讯接收数据为16进制如下 5

0180000081具体怎么写,求帮助要求0.2秒中断处理一次求大侠帮助... 01 80 00 00 81 具体怎么写,求帮助 要求0.2秒中断处理一次 求大侠帮助 展开
 我来答
zjwoshi
2012-08-14 · TA获得超过114个赞
知道答主
回答量:182
采纳率:0%
帮助的人:120万
展开全部
写了一个,不知道可不可以达到你的需求.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO.Ports;
namespace PortTestAAA
{
class Program
{
static void Main(string[] args)
{
PortOperator myTestPort = new PortOperator();
myTestPort.PortName = "COM1";
myTestPort.BaudRate = 9600;
myTestPort.DataChange += new PortOperator.DataChangeEventHandle(myTestPort_DataChange);
myTestPort.Start();
}
static void myTestPort_DataChange(object sender, byte[] data)
{
//在这里写你需要处理东西就行了
Console.WriteLine(Encoding.UTF8.GetString(data));
}
}
class PortOperator
{
public delegate void DataChangeEventHandle(object sender,byte[] data);
public event DataChangeEventHandle DataChange;
SerialPort gPort;
public string PortName { get; set; }
public int BaudRate { get; set; }
/// <summary>
/// Suspend : /ms
/// </summary>
public int Suspend { get; set; }
public PortOperator()
{
gPort = new SerialPort();
Suspend = 200;
}
void OnDataChange(byte[] data)
{
if (DataChange != null)
DataChange(this, data);
}
public void Start()
{
gPort.Close();
gPort.PortName = PortName;
gPort.BaudRate = BaudRate;
gPort.Open();
Thread thReadData = new Thread(() => { ReadData(); });
thReadData.IsBackground = true;
thReadData.Start();
}
void ReadData()
{
while (true)
{
Thread.Sleep(Suspend);
if (!gPort.IsOpen || gPort.BytesToRead < 1)
continue;
var buffer = new byte[gPort.BytesToRead];
gPort.Read(buffer, 0, buffer.Length);
OnDataChange(buffer);
}
}
}
}
文章已是世多1
2012-08-14 · TA获得超过104个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:79.1万
展开全部
这个不懂啊!!!!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-14
展开全部
定时器 每0.2秒处理一次

不难 吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式