从串口读取状态字并分析 ( 积分: 100 )

  • 主题发起人 主题发起人 caoqixin
  • 开始时间 开始时间
C

caoqixin

Unregistered / Unconfirmed
GUEST, unregistred user!
我用spcomm从串口读取一组数据,其中第3个字节是一个状态字,其格式:
Bit0:1表示...,0表示.....
Bit1
.
Bit6
如何读取这个字节,并分析它的每一位是1还是0?
 
我用spcomm从串口读取一组数据,其中第3个字节是一个状态字,其格式:
Bit0:1表示...,0表示.....
Bit1
.
Bit6
如何读取这个字节,并分析它的每一位是1还是0?
 
var s:string;
if (ord(s[3]) and $80)=0 then ...//第7位为0,
//7:$80,6:$40,5:$20,4:$10,3:$8,2:$4,1:$2,0:$1
 
富翁,按上述方法怎么不行呢?请明示。
 
procedure TForm1.FormCreate(Sender: TObject);
var s,ss:string;
begin
s:='A';
ss:='';
if (ord(s[1]) and $80)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $40)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $20)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $10)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $8)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $4)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $2)=0 then ss:=ss+'0' else ss:=ss+'1';
if (ord(s[1]) and $1)=0 then ss:=ss+'0' else ss:=ss+'1';
memo1.text:=ss;
end;
已测试,无问题,MEMO1显示01000001
你的数据若非字符串,则把ord()去掉
 
谢谢富翁的相助!问题是出在产品说明书上。
 
后退
顶部