本人接触单片机,主要用dephi写上位机程序,有一段时间,没有师傅,很多问题都是在网上寻找答案,虽然自我解决很有意义,但接工程了,时间抓的有些紧,所以希望拜个师傅,可以熟练的使用delphi进行上位机编程,有意者留一个qq号

解决方案 »

  1.   

    上位机编程,无非涉及到上位机与下位机的通信协议。
    首先双方要定义一个完善的通信协议(无二义性)
    大多数是以串口通讯的吧?掌握串口通信,数据的收发、解析等。
    有些是USB口通信,一般会提供一些DLL供调用。
      

  2.   

    呵呵,是啊,小弟应该主动点吧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
      

  3.   


    比如你要得到第4位的值,将数值与二进制的00001000作AND操作,然后判断返回的数值是否为00001000即可。其它位类推。
      

  4.   

    恩,我明白你意思,但是,但AND过后,如何掐头去尾呢。
      

  5.   


    。。还掐头去尾干嘛?比如,现在有个数53,二进制是00110101,你要检查第4位是不是1,用00001000(十进制8)去作AND操作,得到的结果是00001000,表明第4位是1,你要检查第3位是不是1,用00000100(十进制4)去作AND操作,得到的结果是00000000,表明第3位是0。你要实在还想要把00001000这样的结果变成00000001,用shr就行了。
      

  6.   

    引用一下缰哥的东西:{ 返回一个整型数的某二进位值 }
    function TestBit(Value, Index : integer) : Byte;
    asm
       BT  EAX, Index   //检测Index位是否为1,如为1则置PSW寄存器的CF位为1
       SETB AL          // CF -> AL
    end;
      

  7.   


    恩,你那是对一个个字符串的操作,我也是一个数组,中的第4喂,他对应的是一个数据。不知道我理解的对不对。
    你可以帮忙看一下源程序
    http://cache.ourdev.cn/bbs_upload395919/files_34/ourdev_588287DI8N6B.rar