串口通讯中收到一个字节后的处理

gsky 2010-11-17 03:12:46
串口通讯中收到一个字节
serialPort_ups.Read(buff, 0,1);
假设字节为abcd0000
a b c d 分别为0和1 然后代表着设备的某种状态
我该如何判断buff 万分感谢

if(..10010000)
{
...
}
if(..10110000)
{
....
}
...全文
204 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gsky 2010-11-17
  • 打赏
  • 举报
回复
关键是与 或操作 基础不行 忘了 上大学时候没好好学这块号后悔呀
与上0x40==0x40就可以了
兔子-顾问 2010-11-17
  • 打赏
  • 举报
回复
不是我说的不明白,是你看不懂,你搜索一下计算机基础中的字节是什么意思先吧。
gsky 2010-11-17
  • 打赏
  • 举报
回复
我的意思是 比如
0001 0000
1001 0000
1101 0000
1101 0000
1100 0000
1000 0000
。。。
。。。
就是第三个都是0 这样他就代表一种设备状态了 搞得我不知如何下手 一个个列举肯定不是最佳方案呀
兔子-顾问 2010-11-17
  • 打赏
  • 举报
回复
已经写给你了。自己打开计算器。写好二进制的转16进制即可。
比如
10000000
你就对应的和这个二进制数的16进制或10进制表示形式与操作即可。
10000000->128
if(buff & 128 == 128)
{
}

if(buff & 0x80 == 0x80)
{
}
gsky 2010-11-17
  • 打赏
  • 举报
回复
有这样一种需求 比如
字节 xxxx0000 第三个x是0就代表一种状态 如何更好的判断呢 感谢gomoku、wuyazhe。我对字节进制这块真的补补课了
兔子-顾问 2010-11-17
  • 打赏
  • 举报
回复
if(buff & 0x0a == 0x0a)
{
//有a
}
if(buff & 0x0b == 0x0b)
{
//有b
}
其他以此类推
gomoku 2010-11-17
  • 打赏
  • 举报
回复

0x00 0000 0000
0x10 0001 0000
0x20 0010 0000
0x30 0011 0000
0x40 0100 0000
0x50 0101 0000
....
0xF0 1111 0000

要适当补课了:)

110,545

社区成员

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

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

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