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

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

?? udeltaplc.pas

?? 臺達PLC通信用
?? PAS
字號:
unit UDeltaPLC;


interface
    uses RxTimer,SysUtils,DateUtils,forms;

const
    MAX_POINT_COUNT=16; //最大16個點

type
  TKmtPlc=Class
        bConn:Boolean;
        iPort:Integer;
        bOutputStat:array [1..MAX_POINT_COUNT] of Boolean;
        bInputStat:array [1..MAX_POINT_COUNT] of Boolean;
        tmReadStat:TRxTimer;              //不斷的讀狀態
        procedure InputStat(sStr:String);
        procedure OutputStat(sStr:String);

        constructor Create(_iPort:Integer);
        destructor Destroy();override;
        procedure InitPLC();
        Procedure OnReadStatEvent(Sender:TObject);
        procedure SendData(sData:String);
        Function ReadResFromPort():String;
        procedure SetOutputStat(iIndex:Integer;bStat:Boolean);
        Function CheckConn():String;
  End;

var
    KmtPlc:TKmtPlc;

implementation

uses PComm;

Function mypower(n,m:Integer):Integer;
var
    i,iRes:Integer;
Begin
    iRes:=1;
    for i:=1 to m do
        iRes:=iRes*n;
    Result:=iRes;
End;

procedure TKmtPlc.InitPLC();
var
    i:Integer;
Begin
    for i:=1 to 16 do
    Begin
        sleep(50);
        SetOutputStat(i-1,false);
    End;
End;
constructor TKmtPlc.Create(_iPort:Integer);
var
    i:Integer;
Begin
    iPort:=_iPort;
    bConn:=True;
    tmReadStat:=TRxTimer.Create(nil);
    tmReadStat.Interval:=300;
    tmReadStat.OnTimer:=OnReadStatEvent;
    tmReadStat.Enabled:=False;
    //初始化輸入輸出狀態
    for i:=1 to 16 do
    Begin
        bOutputStat[i]:=false;
        bInputStat[i]:=false;
    End;
End;

destructor TKmtPlc.Destroy();
Begin
    tmReadStat.Enabled:=false;
    tmReadStat.Destroy;
//    inherited;
End;

Function HexToInt(Hex : string) : Integer;
const cHex = '0123456789ABCDEF';
    var mult,i,loop : integer;
begin
    result := 0;
    mult := 1;
    for loop := length(Hex) downto 1 do
    begin
        i := pos(Hex[loop],cHex)-1;
        if (i < 0) then i := 0;
            inc(result,(i*mult));
        mult := mult * 16;
    end;
end;

Function LRC(str :String) :String;
var
	c,l:Integer;
	c_Data:String;
    d_lrc:integer;
    h_lrc:String;
Begin
    c := 0;
    l := Length(str) div 2 ;
    d_lrc:=0;
    For c := 1 To l  do
	Begin
         c_data := Copy(str, c*2-1, 2)   ;
         d_lrc := d_lrc + HexToInt(c_data);
    End;
    If d_lrc > 255 Then
	Begin
        d_lrc := d_lrc Mod 256;
    End;
    h_lrc := IntToHex(256 - d_lrc,4);
    If Length(h_lrc) > 2 Then
	Begin
        h_lrc := Copy(h_lrc, Length(h_lrc) - 1, 2)
    End;
    LRC := h_lrc;
end;

procedure TKmtPlc.SendData(sData:String);
var
    buffer : Array[1..255] of char;
    i,iLen:Integer;
    sStr,sLRC:String;
begin
    sLRC:=LRC(sData);
    sStr:=':'+sData+sLRC+#13+#10;
    iLen:=length(sStr);
    if iLen>255 then Exit;
    for i:=1 to iLen do
        buffer[i]:=sStr[i];
    sio_write(iPort,@buffer,iLen);
end;
Function TKmtPlc.CheckConn():String;
var
    iLen:integer;
	sSave:String;
Begin
    sSave:='';
    iLen:=sio_getch(iPort);
    while iLen>=0 do  //包含Asc為0的字符
    begin
        if iLen>=0 then
        begin
            sSave:=sSave+Chr(iLen);
        end
        else
        Begin
            break;
        End;
        iLen:=sio_getch(iPort);
    end;
    Result:=sSave;
End;
Function TKmtPlc.ReadResFromPort():String;
var
    iLen:integer;
	sSave:String;
    dtInTime:TDateTime;
    iTime:Integer;
Begin
    dtInTime:=Now();
    sSave:='';
    repeat
        iLen:=sio_getch(iPort);
        if iLen>=0 then
        begin
            bConn:=True;
            sSave:=sSave+Chr(iLen);
        end;
        if Length(sSave)>3 then
        Begin
           if Copy(sSave,Length(sSave)-1,2)=#13#10 then
           Begin
               break;
           End;
        End;
        iTime:=SecondsBetween(now(),dtInTime);
        if iTime>=3 then
        Begin
            bConn:=false;
            Break;
        End;
    until false;

    Result:=sSave;
End;

procedure TKmtPlc.SetOutputStat(iIndex:Integer;bStat:Boolean);
var
   sCmd:String;
begin
    tmReadStat.Enabled:=false;
    if bStat then
    Begin
        sCMD:='010505'+IntToHex(iIndex-1,2)+'FF00';
    End
    else
    Begin
        sCMD:='010505'+IntToHex(iIndex-1,2)+'0000';
    End;
        SendData(sCMD);
        ReadResFromPort();
    tmReadStat.Enabled:=true;
end;

procedure TKmtPlc.InputStat(sStr:String);
var
    sStat:String;
    iStat:Integer;
    i:Integer;
Begin
//輸入狀態::0102020000FB
    sStat:=Copy(sStr,8,2);
    iStat:=HexToInt(sStat);
    for i:=1 to 8 do
    Begin
        if ((iStat and mypower(2,i-1))<>0) then
            bInputStat[i]:=True
        Else
            bInputStat[i]:=False;
    end;
    sStat:=Copy(sStr,10,2);
    iStat:=HexToInt(sStat);
    for i:=1 to 8 do
    Begin
        if ((iStat and mypower(2,i-1))<>0) then
            bInputStat[i+8]:=True
        Else
            bInputStat[i+8]:=False;
    end;
End;

procedure TKmtPlc.OutputStat(sStr:String);
var
    sStat:String;
    iStat:Integer;
    i:Integer;
Begin
    sStat:=Copy(sStr,8,2);
    iStat:=HexToInt(sStat);
    for i:=1 to 8 do
    Begin
        if ((iStat and mypower(2,i-1))<>0) then
            bOutputStat[i]:=True
        Else
            bOutputStat[i]:=False;
    end;
    sStat:=Copy(sStr,10,2);
    iStat:=HexToInt(sStat);
    for i:=1 to 8 do
    Begin
        if ((iStat and mypower(2,i-1))<>0) then
            bOutputStat[i+8]:=True
        Else
            bOutputStat[i+8]:=False;
    end;
End;

Procedure TKmtPlc.OnReadStatEvent(Sender:TObject);           //時鐘事件
var
    sStr:String;
begin
    SendData('010205000008');   //取輸出狀態
        sStr:=ReadResFromPort();
        if sStr<>'' then
        Begin
            OutputStat(sStr);
        End;
    SendData('010204000010');   //取輸入狀態
        sStr:=ReadResFromPort();
        if sStr<>'' then
        Begin
            InputStat(sStr);
        End;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费在线观看| 在线视频一区二区免费| 久久婷婷色综合| 国产一区二区精品在线观看| 精品国产1区二区| 成人黄色a**站在线观看| 亚洲天堂免费看| 欧美日韩国产综合久久| 久久精品噜噜噜成人av农村| 久久亚洲综合色一区二区三区| 国产aⅴ综合色| 亚洲精品成人精品456| 91精品婷婷国产综合久久竹菊| 狠狠久久亚洲欧美| 国产精品区一区二区三| 精品视频999| 精品一区二区三区免费播放| 国产精品久久久久久久浪潮网站| 欧美日韩三级一区二区| 日韩黄色一级片| 欧美韩国日本不卡| 欧美日韩一区二区三区四区五区| 激情综合色综合久久综合| 国产精品午夜免费| 欧美精品1区2区| av爱爱亚洲一区| 免费成人在线视频观看| 中文字幕在线不卡| 日韩一区二区视频在线观看| 国产99久久久久| 五月天国产精品| 中文幕一区二区三区久久蜜桃| 精品1区2区3区| 粉嫩久久99精品久久久久久夜| 午夜伦欧美伦电影理论片| 欧美激情在线免费观看| 51精品国自产在线| 色婷婷av一区二区三区大白胸| 久久精品国产亚洲一区二区三区 | 3751色影院一区二区三区| 激情小说亚洲一区| 亚洲狠狠爱一区二区三区| 国产欧美精品一区aⅴ影院 | 一区二区三区在线视频观看58 | 成人三级在线视频| 麻豆精品视频在线观看免费| 亚洲欧美日韩国产综合| 国产欧美日韩久久| 日韩亚洲国产中文字幕欧美| 欧洲在线/亚洲| 91小视频在线观看| 丁香婷婷综合色啪| 国产精华液一区二区三区| 日本va欧美va瓶| 亚洲香肠在线观看| 日本不卡123| 亚洲人一二三区| 国产精品久久久久久久久久免费看 | 日韩精品一区二区三区四区视频| 91麻豆国产福利精品| 成人av片在线观看| 国产精品原创巨作av| 久久av资源站| 精品一区免费av| 日本免费在线视频不卡一不卡二| 亚洲男人的天堂网| 亚洲日本在线a| 一区二区三区欧美亚洲| 亚洲综合精品久久| 亚洲在线视频免费观看| 亚洲一区精品在线| 亚洲一区二区五区| 亚洲午夜久久久久久久久电影网| 亚洲一区二区综合| 日韩激情中文字幕| 美日韩黄色大片| 麻豆成人久久精品二区三区红| 蜜臀av一区二区在线免费观看| 日本aⅴ精品一区二区三区 | 国产日韩亚洲欧美综合| 久久一二三国产| 中文字幕av一区 二区| 国产视频911| 亚洲人成网站精品片在线观看 | 欧美疯狂做受xxxx富婆| 91精品久久久久久久99蜜桃| 91精品国产91热久久久做人人| 欧美一区二区网站| 久久夜色精品国产噜噜av| 国产精品污网站| 一个色在线综合| 亚洲1区2区3区4区| 国产在线精品免费| 成a人片国产精品| 在线观看日韩精品| 久久久久九九视频| 国产日韩欧美麻豆| 最新国产成人在线观看| 亚洲激情成人在线| 蜜臀久久99精品久久久久宅男| 国产米奇在线777精品观看| 不卡欧美aaaaa| 欧美色爱综合网| 久久久亚洲高清| 夜色激情一区二区| 久久精品国产久精国产| 91在线视频观看| 日韩色在线观看| 《视频一区视频二区| 日韩av一区二区在线影视| 成人毛片老司机大片| 欧美日韩一区二区三区免费看| 精品粉嫩aⅴ一区二区三区四区| 国产农村妇女毛片精品久久麻豆| 一区二区三区国产豹纹内裤在线 | 麻豆精品精品国产自在97香蕉| 成人免费av资源| 69av一区二区三区| 中文一区一区三区高中清不卡| 亚洲一区二区三区自拍| 久久99国产乱子伦精品免费| 97久久超碰国产精品| 久久婷婷久久一区二区三区| 一区二区日韩av| 成人福利视频网站| 欧美成人欧美edvon| 夜夜嗨av一区二区三区四季av| 精品一区二区免费视频| 欧美性受xxxx黑人xyx性爽| 国产欧美日韩中文久久| 日本sm残虐另类| 色婷婷久久综合| 国产精品久久777777| 免费观看成人av| 欧美在线一区二区| 亚洲天堂久久久久久久| 国产精品亚洲视频| 日韩午夜激情电影| 亚洲国产精品一区二区www| 不卡的电视剧免费网站有什么| 欧美电影免费观看完整版| 亚洲韩国一区二区三区| 91在线视频观看| 中文字幕一区二区三区不卡| 成人免费毛片高清视频| 久久亚洲精品国产精品紫薇| 免费成人你懂的| 欧美精品一级二级三级| 亚洲最大色网站| 色综合久久久久| 136国产福利精品导航| 国产精品一品二品| 久久嫩草精品久久久精品一| 美女在线视频一区| 日韩精品一区二区三区中文不卡| 五月天丁香久久| 欧美羞羞免费网站| 亚洲一卡二卡三卡四卡五卡| 色成年激情久久综合| 亚洲欧美偷拍卡通变态| 99在线精品免费| 136国产福利精品导航| 91麻豆蜜桃一区二区三区| 中文字幕亚洲一区二区va在线| caoporen国产精品视频| 国产精品成人午夜| 91丨九色丨蝌蚪丨老版| 亚洲人成网站影音先锋播放| 91视频国产资源| 亚洲一区二区三区四区不卡| 欧美日韩综合在线免费观看| 亚洲一区二区偷拍精品| 51精品秘密在线观看| 九九九久久久精品| 国产三级精品在线| 91美女在线视频| 午夜视频在线观看一区| 欧美一级精品在线| 国产盗摄一区二区| 亚洲欧美日韩成人高清在线一区| 色女孩综合影院| 午夜电影网亚洲视频| 日韩精品一区二| 成人av网站免费| 亚洲一区在线看| 日韩精品专区在线影院重磅| 国产精品亚洲综合一区在线观看| 国产精品国产三级国产aⅴ入口| 色婷婷亚洲精品| 日本女人一区二区三区| 国产日韩成人精品| 91理论电影在线观看| 午夜精品一区在线观看| 久久久久久免费| 色婷婷久久久亚洲一区二区三区| 强制捆绑调教一区二区| 日本一区二区视频在线观看| 在线观看国产91| 国产精品一区免费在线观看| 亚洲欧美一区二区三区久本道91|