求助,关于C#linux查看cpu实时频率处理高频率的串口数据

2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
本帖子已过去太久远了,不再提供回复功能。private List&byte& buffer = new List&byte&(256);//默认分配1/16页内存,并始终限制不允许超过
private byte[] binary_data_1 = new byte[12];//
private byte[] sendbuff = new byte[4];
int timeoutCount=0;
bool timeoutFlag =
private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//Getting data from Comm Port
if (IClosing)
timeoutFlag =
Listening =//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
int n = SerialPort1.BytesToR
byte[] buf = new byte[n];
SerialPort1.Read(buf, 0, n);//读取缓冲数据
bool data_1_catched =//缓存记录数据是否捕获到
buffer.AddRange(buf);
while (buffer.Count &= 12)
byte CRCH, CRCL;
byte[] crcTemp = new byte[10];
buffer.CopyTo(0, crcTemp, 0, 10);
CRCData.CalculateCrc16(crcTemp, out CRCH, out CRCL);
if (buffer[10] != CRCH && buffer[11] != CRCL)
buffer.RemoveAt(0);
//继续下一次循环
buffer.CopyTo(0, binary_data_1, 0, 12);//复制一条完整数据到具体的数据缓存
data_1_catched =
buffer.RemoveRange(0, 12);//正确分析一条数据,从缓存中移除数据。
if (data_1_catched)
foreach (byte data in binary_data_1)
RecText = RecText + data.ToString();
byte[] dataTemp = new byte[2];// for Hex to singal.
int rowNo=binary_data_1[1];
this.Invoke((EventHandler)(delegate
for (int i = 0; i & 4; i++)
dataTemp[0]=binary_data_1[i*2+3];
dataTemp[1]=binary_data_1[i*2+2];
xx=dataTemp[0]*256+dataTemp[1];
this.dataViewMain[i+1, rowNo].Value = xx.ToString();
Listening =
timeoutFlag =
timeoutCount = 0;
还有一段查表法的CRC16的代码C# code
class CRC16
public CRC16()
private readonly byte[] _auchCRCHi = new byte[]//crc高位表
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
private readonly byte[] _auchCRCLo = new byte[]//crc低位表
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
0x43, 0x83, 0x41, 0x81, 0x80, 0x40
public ushort CalculateCrc16(byte[] buffer)
byte crcHi = 0
// 高位初始化
byte crcLo = 0
// 低位初始化
for (int i = 0; i & buffer.L i++)
int crcIndex = crcHi ^ buffer[i]; //查找crc表值
crcHi = (byte)(crcLo ^ _auchCRCHi[crcIndex]);
crcLo = _auchCRCLo[crcIndex];
return (ushort)(crcHi && 8 | crcLo);
public ushort CalculateCrc16(byte[] buffer, out byte crcHi, out byte crcLo)
// high crc byte initialized
// low crc byte initialized
for (int i = 0; i & buffer.L i++)
int crcIndex = crcHi ^ buffer[i]; // calculate the crc lookup index
crcHi = (byte)(crcLo ^ _auchCRCHi[crcIndex]);
crcLo = _auchCRCLo[crcIndex];
return (ushort)(crcHi && 8 | crcLo);
------解决方案--------------------主业是做液晶电视和显示器的开发(C语言)。楼主有心了。
------解决方案--------------------
------解决方案--------------------收藏,学习了…………,谢谢分享!
------解决方案--------------------这方面很少接触 。。。。谢谢LZ分享
------解决方案--------------------路过。。
------解决方案--------------------液晶电视和显示器的开发
------解决方案--------------------谢谢了!!
------解决方案--------------------很不错 感谢分享!
------解决方案--------------------好东西啊 先记下 以后来看
------解决方案--------------------支持代码分享
------解决方案--------------------支持!
------解决方案--------------------学习了,谢谢分享
------解决方案--------------------学习咯
------解决方案--------------------学习了
------解决方案--------------------支持分享
------解决方案--------------------代码很熟最好是列出你的测试数据(通讯协议),以及CRC校验方法只是贴代码,让人不能跟实际应用联系在一起(本文来自互联网,不代表搜站(/)的观点和立场)本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(),我们会及时处理和回复,谢谢编辑推荐最近更新 上传我的文档
 下载
 收藏
所有文档均可在线免费浏览,需要的朋友请看好是否是自己需要的文档。所有资料来源于网络,仅供大家参考学习,版权归原作者。若有侵权,敬请及时告知,本人会及时删除侵权文档,竭诚全力为您服务!!!
 下载此文档
正在努力加载中...
串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
下载积分:1775
内容提示:串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
文档格式:DOC|
浏览次数:16|
上传日期: 09:08:46|
文档星级:
该用户还上传了这些文档
串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
官方公共微信

我要回帖

更多关于 linux查看cpu实时频率 的文章

 

随机推荐