delphi 上位机编程 拜师 本人接触单片机,主要用dephi写上位机程序,有一段时间,没有师傅,很多问题都是在网上寻找答案,虽然自我解决很有意义,但接工程了,时间抓的有些紧,所以希望拜个师傅,可以熟练的使用delphi进行上位机编程,有意者留一个qq号 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上位机编程,无非涉及到上位机与下位机的通信协议。首先双方要定义一个完善的通信协议(无二义性)大多数是以串口通讯的吧?掌握串口通信,数据的收发、解析等。有些是USB口通信,一般会提供一些DLL供调用。 呵呵,是啊,小弟应该主动点吧qq号报上来183423390现在遇到的问题是我想读出一组数据中某一位的值部分程序如下procedure TFrmMain.Button14Click(Sender: TObject);begin Memo2.Text:=trim(Edit1.Text)+'3100'; ArrInfo[0]:=StrToInt('$'+trim(Edit1.Text)); ArrInfo[1]:=StrToInt('$31'); ArrInfo[2]:=StrToInt('$00'); tmpCRC:=CRC16(ArrInfo,3); Memo2.Text:=Memo2.Text+IntToHex2(tmpCRC mod 255)+IntToHex2(tmpCRC div 255); //低8位在前 高8位在后 btnSend.Click;end;我现在想读出第四位的数据,显示在对于的edit中,完整的程序麻烦大家看一下http://cache.ourdev.cn/bbs_upload395919/files_34/ourdev_588287DI8N6B.rar 比如你要得到第4位的值,将数值与二进制的00001000作AND操作,然后判断返回的数值是否为00001000即可。其它位类推。 恩,我明白你意思,但是,但AND过后,如何掐头去尾呢。 。。还掐头去尾干嘛?比如,现在有个数53,二进制是00110101,你要检查第4位是不是1,用00001000(十进制8)去作AND操作,得到的结果是00001000,表明第4位是1,你要检查第3位是不是1,用00000100(十进制4)去作AND操作,得到的结果是00000000,表明第3位是0。你要实在还想要把00001000这样的结果变成00000001,用shr就行了。 引用一下缰哥的东西:{ 返回一个整型数的某二进位值 }function TestBit(Value, Index : integer) : Byte;asm BT EAX, Index //检测Index位是否为1,如为1则置PSW寄存器的CF位为1 SETB AL // CF -> ALend; 恩,你那是对一个个字符串的操作,我也是一个数组,中的第4喂,他对应的是一个数据。不知道我理解的对不对。你可以帮忙看一下源程序http://cache.ourdev.cn/bbs_upload395919/files_34/ourdev_588287DI8N6B.rar 在Delphi中,如何用程序来分析SQL或Access数据表的结构,如: 动态自定义纸张大小的问题,请高手支持 躺床上一个半小时,愣是没睡不着!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 关联表(参照完整性)删除记录问题 十分简单的问题。 关于MDICHILD窗口的小问题,请各位大侠帮帮吗,急 快捷键的问题? 为什么我的线程不执行? 请问如何用API检测磁盘有没有写保护? 用NMFTP时,如何判断LIST出来的是文件名或是目录。因为有些文件名没有后缀。 求在DELPHI中做一DVD视频播放器 关于对方法赋值的一点问题
首先双方要定义一个完善的通信协议(无二义性)
大多数是以串口通讯的吧?掌握串口通信,数据的收发、解析等。
有些是USB口通信,一般会提供一些DLL供调用。
现在遇到的问题是我想读出一组数据中某一位的值
部分程序如下
procedure TFrmMain.Button14Click(Sender: TObject);
begin
Memo2.Text:=trim(Edit1.Text)+'3100';
ArrInfo[0]:=StrToInt('$'+trim(Edit1.Text));
ArrInfo[1]:=StrToInt('$31');
ArrInfo[2]:=StrToInt('$00');
tmpCRC:=CRC16(ArrInfo,3);
Memo2.Text:=Memo2.Text+IntToHex2(tmpCRC mod 255)+IntToHex2(tmpCRC div 255); //低8位在前 高8位在后
btnSend.Click;
end;我现在想读出第四位的数据,显示在对于的edit中,完整的程序麻烦大家看一下
http://cache.ourdev.cn/bbs_upload395919/files_34/ourdev_588287DI8N6B.rar
比如你要得到第4位的值,将数值与二进制的00001000作AND操作,然后判断返回的数值是否为00001000即可。其它位类推。
。。还掐头去尾干嘛?比如,现在有个数53,二进制是00110101,你要检查第4位是不是1,用00001000(十进制8)去作AND操作,得到的结果是00001000,表明第4位是1,你要检查第3位是不是1,用00000100(十进制4)去作AND操作,得到的结果是00000000,表明第3位是0。你要实在还想要把00001000这样的结果变成00000001,用shr就行了。
function TestBit(Value, Index : integer) : Byte;
asm
BT EAX, Index //检测Index位是否为1,如为1则置PSW寄存器的CF位为1
SETB AL // CF -> AL
end;
恩,你那是对一个个字符串的操作,我也是一个数组,中的第4喂,他对应的是一个数据。不知道我理解的对不对。
你可以帮忙看一下源程序
http://cache.ourdev.cn/bbs_upload395919/files_34/ourdev_588287DI8N6B.rar