亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? econv230p.pas

?? Delphi編寫的ModBus協(xié)議上位機軟件
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
      57600: b57600.Checked := true;
      115200: b115200.Checked := true;
      128000: b128000.Checked := true;
      256000: b256000.Checked := true;
      else
      begin
        buser.Checked := true;
      end;
    end; // end case econfile.comm.baudrate

    m_address.Items[econfile.comm.rtuaddress-1].Checked := true;

    // 初始化通訊相關參數(shù)
    vacomm1.Close;
    vacomm1.Baudrate := changbaudrate(econfile.comm.baudrate);
    vacomm1.UserBaudrate := econfile.comm.userbaud;
    vacomm1.Databits := changdatabits(econfile.comm.databits);
    vacomm1.Stopbits := changstopbits(econfile.comm.stopbits);
    vacomm1.Parity := changparity(econfile.comm.parity);
    vacomm1.PortNum := econfile.comm.portnum;
    sendtimer.Enabled := false;
    revtimer.Enabled := false;
    sendtimer.Interval := 1;
    timerout1.Interval := econfile.comm.timeout;
    m_comset.Enabled := true;
//    readholdregister(econfile);
//    readfifo(econfile);
  end;//end with mainform do
end;

//----------------------窗口激活處理-------------------------
procedure TMainForm.FormActivate(Sender: TObject);
begin
  mainform.Caption := companyname;
end;

//----------------------數(shù)據(jù)定義文件保存---------------------
procedure TMainForm.saveClick(Sender: TObject);
begin
  datamemo.Lines.SaveToFile(getfilename);
end;

//----------------------打開數(shù)據(jù)定義文件處理-----------------
procedure TMainForm.fileopenClick(Sender: TObject);
begin
  stop_comm;
  if (true=open1.Execute) then getfilename := open1.FileName
     else exit;
  mainform.Caption := companyname+'----'+getfilename;
  system_init;
end;

//----------------------接收定時處理-------------------------
procedure TMainForm.revtimerTimer(Sender: TObject); //接收數(shù)據(jù)
var
   a,b:integer;
   j:char;
   FirstString:String; //':'數(shù)據(jù)包頭標識
   SecondString:String;//兩字節(jié)板地址
   TemStr:String;
begin
  timeoutcount := timeoutcount + 1;

  if (Uppercase(econfile.comm.mode)='ASCII') then
  begin
       if timeoutcount>timerout1.Interval+10 then
       begin
         timerout1.Enabled := TRUE;
         timeoutcount := 0;
       end;

       TemStr := Vacomm1.ReadText;
       receiveString := receiveString+ TemStr;

       a := Pos(':',receiveString); // 找出冒號的位置
       if (a>1) then Delete(receiveString,1,a-1); // 刪除冒號以前的字符
       FirstString := Copy(receiveString,1,1);

       b := Pos(#13#10,receiveString); // 找結束符
       if (b=0) then exit;

       timerout1.Enabled := TRUE;
       sendtimer.Enabled := TRUE;
       for a:=2 To b-1 do //檢查出錯幀
       begin
           SecondString := Copy(receiveString,a,1);
           if not((SecondString[1] in ['0'..'9'])or( SecondString[1]
                 in ['a'..'f'])or( SecondString[1] in ['A'..'F']))then
           begin
             Delete(receiveString,1,b+1);
             exit;
           end;
       end;
       temstr := copy(receivestring,1,b+1);
       delete(receivestring,1,b+1);

       revmemo.Lines.text := revmemo.Lines.text+temstr;
       if (revmemo.Lines.count>20) then
       begin
         revmemo.lines.clear;
         revmemo.lines.add('接收數(shù)據(jù)');
       end;

       framecheck;
       asclltoapp(temstr,econfile);
       app_analys(econfile);

  end;//if ascii mode

  if (Uppercase(econfile.comm.mode)='RTU') then
  begin
    if timeoutcount>=(13*1000/econfile.comm.baudrate) then
    begin
      if (framecheck = 0)and(read_index>0) then
      begin
        for a:=0 to read_index-1 do econfile.analysbuffer[a+1]:=revbuff[a];
        app_analys(econfile);
        for a:=0 to 1024 do revbuff[a]:=0;

        //timerout1.Enabled := false;
        sendtimer.Enabled := TRUE;
        poll_count := 0;
        revtimer.Enabled := False;
        //timeoutcount := 0;
        revmemo.Lines.Text := revmemo.Lines.Text+#13;

        if (revmemo.Lines.count>20) then
        begin
          revmemo.lines.clear;
          revmemo.lines.add('接收數(shù)據(jù)');
        end;
      end
      else
      begin
        timerout1.Enabled := TRUE;
      end;
    end;
  end;
end;

//----------------------發(fā)送定時處理-------------------------
procedure TMainForm.sendtimerTimer(Sender: TObject);
var
  temp: string;
  i: integer;
  j: integer;
  sendbuff: array[1..8]of byte;
  sendstring: string;
begin
  //if (UpperCase(econfile.comm.mode)='RTU') then
  //begin

  poll_count := poll_count+1;
  if (poll_count<=econfile.comm.timepoll) then exit;
  //end;

  timerout1.Enabled := true; //發(fā)送開始計數(shù)

  {i := 0;
  while (econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index]='') do
  begin
      i := i+1;
      if i > 50  then
      begin
        break;  // 無插入幀,跳出循環(huán)
      end;
      econfile.comm.sendbuffer2.index := (econfile.comm.sendbuffer2.index + 1) mod 50  ;
  end;

    // 如果無插入幀則發(fā)正常幀數(shù)據(jù)
  if (econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index]='') then
  begin
      while (econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index]='') do
      begin
        econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50 ;
      end;
      econfile.comm.sendbuffer := econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index];
      econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50  ;
    end
    else
    begin
      econfile.comm.sendbuffer := econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index];
      econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index] := ''; //送入發(fā)送區(qū)后刪除插入值
      econfile.comm.sendbuffer2.index := (econfile.comm.sendbuffer2.index + 1) mod 50  ;
  end;}

  if (econfile.comm.sendbuffer3<>'') then
  begin
    econfile.comm.sendbuffer := econfile.comm.sendbuffer3;
    econfile.comm.sendbuffer3 := '';
  end
  else
  if (econfile.comm.sendbuffer4<>'') then
  begin
    econfile.comm.sendbuffer := econfile.comm.sendbuffer4;
    econfile.comm.sendbuffer4 := '';
  end
  else
  begin
    if (econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index]='') then
    begin
      i := 0;
      while (econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index]='') do
      begin
         if (i=50)  then break;
         econfile.comm.sendbuffer2.index := (econfile.comm.sendbuffer2.index + 1) mod 50 ;
         i := i+1;
      end; //search a true frame ready to send

      while (econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index]='') do
      begin
         econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50 ;
      end;
      econfile.comm.sendbuffer := econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index];
      econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50 ;
    end
    else
    begin
      sendflag1 := not sendflag1;
      if (sendflag1) then
      begin
        econfile.comm.sendbuffer := econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index];
        econfile.comm.sendbuffer2.buffer[econfile.comm.sendbuffer2.index] := ''; //送入發(fā)送區(qū)后刪除插入值
        econfile.comm.sendbuffer2.index := (econfile.comm.sendbuffer2.index + 1) mod 50 ;
      end
      else
      begin
        while (econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index]='') do
        begin
          econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50 ;
        end;
        econfile.comm.sendbuffer := econfile.comm.sendbuffer1.buffer[econfile.comm.sendbuffer1.index];
        econfile.comm.sendbuffer1.index := (econfile.comm.sendbuffer1.index + 1) mod 50 ;
      end;
    end;
  end;

  if (UpperCase(econfile.comm.mode)='RTU') then
  begin
    sendbuff[1] := econfile.comm.rtuaddress;
    sendbuff[2] := strtohex1(copy(econfile.comm.sendbuffer,1,2),2);
    beginaddress := strtohex1(copy(econfile.comm.sendbuffer,3,4),4);
    sendbuff[3] := beginaddress div 256;
    sendbuff[4] := beginaddress mod 256;

    if (sendbuff[2]=$1) then
    begin
      readcoilcount := strtohex1(copy(econfile.comm.sendbuffer,7,4),4);
    end;
    if (sendbuff[2]=$2) then
    begin
      readinputcount := strtohex1(copy(econfile.comm.sendbuffer,7,4),4);
    end;
    if (sendbuff[2]=$5) then
    begin
      //addsendbuffer2(econfile,'01'+inttohex(beginaddress,4)+'0001');
    end;
    if (sendbuff[2]=$18) then
    begin
      j := crc(sendbuff[1],4);
      sendbuff[5] := j div 256;
      sendbuff[6] := j mod 256;
      temp := '';
      for j:=1 to 6 do temp := temp + inttohex(sendbuff[j],2);
      Vacomm1.WriteBuf(sendbuff,6);
    end
    else
    begin
      sendbuff[5] := strtohex1(copy(econfile.comm.sendbuffer,7,4),4)div 256;
      sendbuff[6] := strtohex1(copy(econfile.comm.sendbuffer,7,4),4)mod 256;
      j := crc(sendbuff[1],6);
      sendbuff[7] := j div 256;
      sendbuff[8] := j mod 256;
      temp := '';
      for j:=1 to 8 do temp := temp + inttohex(sendbuff[j],2);
      Vacomm1.WriteBuf(sendbuff,8);
    end;

    sendmemo.Lines.Add(temp);
    if sendmemo.lines.count>20 then
    begin
        sendmemo.lines.clear;
        sendmemo.lines.Add('發(fā)送數(shù)據(jù)');
    end;
  end;

  if (UpperCase(econfile.comm.mode)='ASCII') then
  begin
    sendstring := inttohex(econfile.comm.rtuaddress,2);
    beginaddress := strtohex1(copy(econfile.comm.sendbuffer,3,4),4);
    i := strtohex1(copy(econfile.comm.sendbuffer,1,2),2);
    if (i=1) then
    begin
      readcoilcount := strtohex1(copy(econfile.comm.sendbuffer,7,4),4);
    end;

    if (i=2) then
    begin
      readinputcount := strtohex1(copy(econfile.comm.sendbuffer,7,4),4);
    end;

    if (i=5) then
    begin
      //addsendbuffer2(econfile,'01'+inttohex(beginaddress,4)+'0001');
    end;

    sendstring := sendstring + econfile.comm.sendbuffer;
    sendstring := sendstring + lrc(sendstring);
    begin
       vacomm1.WriteText(':'+sendstring+#13#10);
       sendmemo.Lines.Add(':'+sendstring+#13);
       if (sendmemo.lines.count>20) then
         begin
           sendmemo.lines.clear;
           sendmemo.lines.Add('發(fā)送數(shù)據(jù)');
         end;
     end
  end;

  sendtimer.Enabled := False;
  poll_count := 0;
  revtimer.Enabled := True;
  timeoutcount := 0;
  read_index := 0;
end;


//----------------------通訊開啟控制-------------------------
procedure TMainForm.m_comcontrolClick(Sender: TObject);
begin
  if (not comm_status) then
  begin
    if  (econfile.comm.timeout <= 1.5*econfile.comm.timepoll) then
    begin
      showmessage('超時時間應大于1.5倍發(fā)送幀間隔時間,請修改');
      exit;
    end
    else
    start_comm;//開始通訊
  end
  else
  begin
    stop_comm;//關閉通訊
  end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产91乱码一区二区三区| 日本中文字幕一区二区有限公司| 欧美一区二区三区免费视频 | 欧美xxxxx牲另类人与| 欧美体内she精高潮| 色就色 综合激情| 色呦呦国产精品| 欧美最新大片在线看| 99久久99久久精品国产片果冻| 成人v精品蜜桃久久一区| 99久久99精品久久久久久 | 91精品国产免费久久综合| 精品视频在线免费看| 欧美精品v日韩精品v韩国精品v| 69av一区二区三区| 日韩免费看的电影| 国产欧美视频一区二区三区| 中文字幕制服丝袜成人av| 亚洲欧美日韩国产另类专区| 亚洲精品免费在线| 日韩精品欧美精品| 经典三级视频一区| 99在线精品视频| 91成人在线免费观看| 91精品在线免费观看| 久久人人97超碰com| 亚洲欧美欧美一区二区三区| 午夜精品一区二区三区三上悠亚| 久久精品免费观看| 一本到不卡免费一区二区| 欧美日韩国产综合一区二区 | 香蕉久久一区二区不卡无毒影院| 免费成人你懂的| www.视频一区| 在线91免费看| 国产精品久久久一本精品| 日韩一区精品视频| 国产成人aaa| 欧美日本免费一区二区三区| 久久久精品蜜桃| 亚洲国产精品一区二区久久恐怖片| 秋霞av亚洲一区二区三| 91色|porny| 久久综合久久鬼色| 午夜精品久久久久影视| 国产成+人+日韩+欧美+亚洲| 91国产免费看| 国产精品久久久久久久午夜片| 亚洲高清久久久| av电影一区二区| 亚洲精品一区二区三区99| 亚洲高清在线视频| 不卡区在线中文字幕| 精品盗摄一区二区三区| 亚洲国产视频在线| 成人涩涩免费视频| 久久久久久久久久美女| 欧美a级一区二区| 欧美日韩免费观看一区二区三区| 国产精品毛片a∨一区二区三区| 免费观看在线综合色| 欧美日韩电影在线| 亚洲日本丝袜连裤袜办公室| 国产美女久久久久| 久久青草国产手机看片福利盒子 | 久久精品国产77777蜜臀| 一本到三区不卡视频| 国产精品护士白丝一区av| 国产精品1区2区3区在线观看| 欧美伦理视频网站| 香蕉加勒比综合久久| 在线精品国精品国产尤物884a| 国产精品久久久久久妇女6080| 国产不卡视频在线播放| 国产午夜精品一区二区三区嫩草| 国产在线乱码一区二区三区| 日韩视频免费观看高清完整版在线观看 | 日韩一区二区不卡| 日欧美一区二区| 日韩美女在线视频 | 国产91在线|亚洲| 久久精品视频一区二区三区| 国产成人欧美日韩在线电影| 中文字幕不卡在线观看| 99国产精品久久| 亚洲网友自拍偷拍| 在线成人小视频| 久久精品国产亚洲一区二区三区| 精品理论电影在线观看| 国产经典欧美精品| 亚洲欧洲国产日韩| 欧美美女一区二区| 久久99久久99| 综合久久国产九一剧情麻豆| 91性感美女视频| 日韩精品欧美精品| 国产日韩精品一区二区浪潮av | 丝瓜av网站精品一区二区| 91精品国产免费久久综合| 国产精品一二二区| 中文字幕五月欧美| 91麻豆精品国产自产在线| 国产专区欧美精品| 亚洲欧美一区二区久久 | 欧美极品另类videosde| 一本大道av一区二区在线播放| 亚洲最大成人综合| 26uuu精品一区二区在线观看| 波多野结衣91| 久久国产乱子精品免费女| 国产精品美女久久久久久久久久久 | 久久久久久久久久久久久久久99 | 在线成人午夜影院| 国产91精品入口| 日韩黄色免费网站| 中文在线资源观看网站视频免费不卡| 色婷婷综合久久久中文一区二区| 男人的j进女人的j一区| 国产精品不卡在线| 337p粉嫩大胆色噜噜噜噜亚洲| 一本大道久久a久久精品综合| 久久91精品国产91久久小草| 亚洲裸体xxx| 欧美极品少妇xxxxⅹ高跟鞋| 欧美一区二区三区免费观看视频 | 国内精品写真在线观看| 亚洲综合小说图片| 国产婷婷色一区二区三区四区| 欧美巨大另类极品videosbest| 成人精品国产一区二区4080| 久久精品国产免费| 亚洲一区视频在线| 国产精品国产a级| 久久综合久久综合久久| 日韩一区二区三免费高清| 色婷婷久久久亚洲一区二区三区| 粉嫩蜜臀av国产精品网站| 久久91精品国产91久久小草 | 久久精品在线观看| 日韩欧美激情一区| 欧美高清视频www夜色资源网| 99久久精品免费| 大尺度一区二区| 国产成人精品网址| 精品一区二区在线观看| 久草在线在线精品观看| 久久精品国产99国产| 蜜臀久久99精品久久久画质超高清| 亚洲一区二区在线播放相泽 | 欧美一区二区日韩| 91精品欧美一区二区三区综合在| 91久久线看在观草草青青| 色综合久久精品| 欧美性大战久久久| 欧美高清视频一二三区| 日韩午夜av电影| 久久综合999| 中文字幕欧美日本乱码一线二线| 久久久久久久久久久电影| 久久久国产精品午夜一区ai换脸| 日韩美女视频在线| 国产三级精品三级| 中文字幕视频一区| 亚洲成人av在线电影| 日韩精品欧美成人高清一区二区| 亚洲一区二区在线免费观看视频| 欧美日韩dvd在线观看| 欧美一区二区三区日韩| 久久久不卡网国产精品一区| 国产欧美日韩麻豆91| 亚洲免费在线电影| 天天综合色天天| 国产乱理伦片在线观看夜一区| 成人综合在线视频| 欧美日本一区二区三区四区| 日韩视频在线你懂得| 国产精品污www在线观看| 亚洲丝袜另类动漫二区| 亚瑟在线精品视频| 久久99国产精品免费网站| 粉嫩av一区二区三区| 欧美日韩综合在线免费观看| 日韩欧美成人一区| 亚洲三级在线观看| 免费高清在线一区| 99精品视频一区二区三区| 欧美精品在线观看播放| 中文一区二区在线观看| 亚洲不卡在线观看| 成人app软件下载大全免费| 欧洲另类一二三四区| 2024国产精品| 亚洲成人777| 成人h版在线观看| 91精品国产综合久久久久久漫画| 国产欧美一区二区精品性| 视频一区在线播放| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 成人做爰69片免费看网站| 欧美日韩精品一区二区天天拍小说|