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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? unitcomm.pas

?? 字模管理程序,為單片機(jī)程序漢字顯示打印而制.無(wú)密碼
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
unit UnitComm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, MSCommLib_TLB, StdCtrls;
const
    cnReturn    =chr(13);
    cnReturnhl    =chr(13)+chr(10);
    SENDLED     =80;
    REVLED      =81;
    KEEPCONN    =82;
    RE_OK       =1;
    CONNECTED   =2;
    NOCARRIER   =3;
    NODIALTONE  =4;
    BUSY        =5;
    CommERR    =6;
    COMPORTERR  =7;
    ATA         =8;
    TIMEOUT     =-1;
    CANCEL      =0;

type
  TComm = class(TForm)
    MSComm: TMSComm;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  protected
    { protected declarations }
  public
    { Public declarations }
    CanCommunicate:boolean;    //TComm標(biāo)志
    MemoP1:^TMemo;//Pointer;
    meter_addr:array [0..6] of byte; //表地址
    function MetertoGprsSendStr(Sstr:string;command:byte;Passstr:string):boolean;
    function WaitRecive(reciflagbf:array of byte;rflagbflen:integer;rlastbflen:integer;TimeOutms:integer;var recibf:array of byte):boolean;
    function SendStr(Sstr:string):boolean;
    function SendData(const sendbf:array of byte;const bflen:integer;intervalms:integer):boolean;
    function ReciData(var recibf:array of byte;var bflen:integer):boolean;
    procedure Close;
    function Open(ComPort:integer;Setings:string;MemoP:Pointer):boolean;
    procedure ClearCommInfo(TopLine:integer);
    procedure ShowCommInfo(Msg:string);
    procedure SaveCommLog(TopLine:integer);
    function  M645Write(w:word;pass:array of byte;addr:array of byte;databf:array of byte;len:integer):boolean;
    function  M645command(commbyte:byte;addr:array of byte;databf:array of byte;len:integer):boolean;
    function  ReadMeter(CtrCode:word):boolean;
    function  ReadMeter1(CtrCode:word;ty:integer;se:integer):boolean;
    function  SetMeter(Sendbf:array of byte):boolean;
    function  SendCommand(command:byte;Sendbf:array of byte):boolean;
    function  WaitReciveFormatforReadSet(var recibf:array of byte;RS:boolean):integer;
    function  WaitReadMeter2(CtrCode:word;var recibf:array of byte):boolean;
    function  WaitReadMeter1(CtrCode:word;var recibf:array of byte;ty:integer;se:integer):boolean;
  end;
var
  Comm: TComm;
  addsub:byte=$33;
const
    zfx: array [0..1] of string = ('正向','反向');
    ywg: array [0..1] of string = ('有功','無(wú)功');
    bss: array [0..2] of string = (' 當(dāng)前 ',' 上月 ','上上月');
    fltab: array [0..3] of string = ('尖','峰','平','谷');
    xtab: array [0..3] of string = ('總','A','B','C');
    sy: array [0..3] of string = ('失壓次數(shù)','失壓時(shí)間','開(kāi)始時(shí)間','結(jié)束時(shí)間');
implementation

{$R *.dfm}
uses LzpPasLib;
function TComm.Open(ComPort:integer;Setings:string;MemoP:Pointer):Boolean;
var
    dwS,dwE:Dword;
    rcode:integer;
    CommOk:boolean;
begin
    result:=false;
    MemoP1:=MemoP;// @form1.CommInfoMemo;
    try
//        if MSComm.PortOpen then begin
//            MSComm.PortOpen:=false;
//            sleep(300);
//        end;
        if not MSComm.PortOpen then begin
            MSComm.RThreshold:=1;
            MSComm.SThreshold:=1;
            MSComm.InputMode:=ComInputModeBinary;
            MSComm.Settings:=Setings;
            MSComm.Handshaking:=0;
            MSComm.CommPort:=ComPort;
            MSComm.InBufferCount:=0;
            MSComm.InputLen:=0;
            MSComm.PortOpen:=true;
            MSComm.DTREnable:=true;
            MSComm.RTSEnable:=true;
       end;
    except
        on E:Exception do begin
            ShowCommInfo('Com'+inttostr(ComPort)+'串口打不開(kāi)!');
            exit;
        end;
    end;
   result:=true;
end;
procedure TComm.Close;
begin
    try
      if MSComm.PortOpen then begin
        MSComm.InBufferCount:=0;
        MSComm.OutBufferCount:=0;
        MSComm.RThreshold:=1;
        MSComm.SThreshold:=1;
        MSComm.PortOpen:=false;
      end;
      MSComm.DTREnable:=false;
      MSComm.RTSEnable:=false;
    except
      on E:Exception do
        ShowCommInfo('Comm '+E.Message);
    end;
end;
function TComm.MetertoGprsSendStr(Sstr:string;command:byte;Passstr:string):boolean;
var
    sb:array [0..255] of byte;
    addb:byte;
    Ls,L,i:integer;
begin  //幀頭(1 byte)+命令字(1 byte)+[密碼]+數(shù)據(jù)包長(zhǎng)度(1 byte)+數(shù)據(jù)包+校驗(yàn)位(1 byte)+幀尾(1
    sb[0]:=$fe;
    sb[1]:=$40;    //幀頭
    sb[2]:=command;
    Ls:=3;
    if command in [0..$7f] then begin
        for i:=1 to 6 do begin
            if Length(Passstr)>=1 then begin
                sb[2+i]:=ord(Passstr[1]);
                delete(Passstr,1,1);
            end else sb[2+i]:=$20;    //' '
        end;
        Ls:=9;
    end;
    L:= Length(Sstr);
    sb[Ls+0]:= lo(L);
    for i:=1 to L do
        sb[Ls+i]:=ord(Sstr[i]);
    addb:=0;
    for i:=1 to Ls+L do
        addb:=addb+sb[i];
    sb[Ls+L+1]:=addb;
    sb[Ls+L+2]:=$24;
    sb[Ls+L+3]:=$fe;
    result:=SendData(sb,Ls+L+4,0);//前后各多發(fā)一個(gè)字節(jié)
end;
function  TComm.SendCommand(command:byte;Sendbf:array of byte):boolean;
var
    sb:array [0..255] of byte;
    addb:byte;
    Ls,L,i:integer;
begin
    sb[0]:=$fe; sb[1]:=$fe;sb[2]:=$fe;sb[3]:=$fe;
    sb[4]:=$68;sb[11]:=$68;
    sb[12]:=command; sb[13]:= Sendbf[0];
    for i:=0 to 5 do sb[i+5]:=meter_addr[i];
    L:= Sendbf[0];
    for i:=0 to L-1 do begin
        sb[14+i]:=Sendbf[1+i]+addsub;
    end;
    addb:=0;
    for i:=4 to 13+L do
        addb:=addb+sb[i];
    sb[13+L+1]:=addb;
    sb[13+L+2]:=$16;
    sb[13+L+3]:=$55;
    result:=SendData(sb,13+L+4,0);//前后各多發(fā)
end;
function TComm.M645Write(w:word;pass:array of byte;addr:array of byte;databf:array of byte;len:integer):boolean;
// 645協(xié)議寫(xiě) 代碼:w, 數(shù)據(jù)databf,長(zhǎng)度:len
var
    i,j,Errcode:integer;
    over,ReadOk:boolean;
    Sendbf:array [0..255] of byte;
    recibf:array [0..255] of byte;
begin
    result:=false;
    Sendbf[0]:=lo(len+2+4);
    Sendbf[1]:=lo(w);
    Sendbf[2]:=hi(w);
//    Sendbf[3]:=1;
//    Sendbf[4]:=$91;
//    Sendbf[5]:=$28;
//    Sendbf[6]:=$73;
    for i:=0 to 5 do begin
        meter_addr[i]:=addr[i];
    end;
    for i:=0 to 3 do begin
        Sendbf[3+i]:=pass[i];
    end;
    for i:=0 to len-1 do begin
        Sendbf[7+i]:=databf[i];
    end;
    for j:=0 to 1 do begin  //兩次
        Application.ProcessMessages;
        Comm.SetMeter(Sendbf);
        Errcode:=  Comm.WaitReciveFormatforReadSet(recibf,true);
        if Errcode=0 then begin //正確
            result:=true;
            exit;     //已完成了,如日時(shí)段
        end;
    end;
end;
function TComm.M645command(commbyte:byte;addr:array of byte;databf:array of byte;len:integer):boolean;
// 645協(xié)議寫(xiě) 代碼:w, 數(shù)據(jù)databf,長(zhǎng)度:len
var
    i,j,Errcode:integer;
    over,ReadOk:boolean;
    recibf:array [0..255] of byte;
    sendbf:array [0..255] of byte;
begin
    result:=false;
    for i:=0 to 5 do begin
        meter_addr[i]:=addr[i];
    end;
    Sendbf[0]:=lo(len);
    for i:=0 to len-1 do begin
        Sendbf[1+i]:=databf[i];
    end;
    for j:=0 to 0 do begin  //有些命令不回答,不許發(fā)兩次,
        Application.ProcessMessages;
        SendCommand(commbyte,Sendbf);
        Errcode:=  WaitReciveFormatforReadSet(recibf,true);
        if Errcode=0 then begin //正確
//            ProgressBar1.Position:=ProgressBar1.Position+1;
            result:=true;
            exit;     //已完成了,如日時(shí)段
        end;
    end;
end;

function  TComm.SetMeter(Sendbf:array of byte):boolean;
var
    sb:array [0..255] of byte;
    addb:byte;
    Ls,L,i:integer;
begin
    sb[0]:=$fe; sb[1]:=$fe;sb[2]:=$fe;sb[3]:=$fe;
    sb[4]:=$68;sb[11]:=$68;
    sb[12]:=$04; sb[13]:= Sendbf[0];
    for i:=0 to 5 do sb[i+5]:=meter_addr[i];
    L:= Sendbf[0];
    for i:=0 to L-1 do begin
        sb[14+i]:=Sendbf[1+i]+addsub;
    end;
    addb:=0;
    for i:=4 to 13+L do
        addb:=addb+sb[i];
    sb[13+L+1]:=addb;
    sb[13+L+2]:=$16;
    sb[13+L+3]:=$55;
    result:=SendData(sb,13+L+4,0);//前后各多發(fā)
end;
function  TComm.WaitReadMeter1(CtrCode:word;var recibf:array of byte;ty:integer;se:integer):boolean;
var
    num,Errcode:integer;
begin
    result:=false;
    for num:=0 to 1 do begin
        Comm.ReadMeter1(CtrCode,ty,se);  //
        Errcode:=  Comm.WaitReciveFormatforReadSet(recibf,false) ;
        if Errcode=0 then begin
            result:=true;
            exit;
        end;
    end;
end;
function  TComm.WaitReadMeter2(CtrCode:word;var recibf:array of byte):boolean;
var
    num,Errcode:integer;
begin
    result:=false;
    for num:=0 to 1 do begin
        Comm.ReadMeter(CtrCode);  //
        Errcode:=  Comm.WaitReciveFormatforReadSet(recibf,false) ;
        //返回 0:正常應(yīng)答   -1:無(wú)應(yīng)答,  其它:應(yīng)答狀態(tài)字(可能沒(méi)-33)
        if Errcode=0 then begin
            result:=true;
            exit;
        end else begin
            recibf[0]:=Errcode;
        end;
    end;
end;
function  TComm.ReadMeter(CtrCode:word):boolean;
var
    sb:array [0..255] of byte;
    addb:byte;
    Ls,L,i:integer;
begin
    sb[0]:=$fe; sb[1]:=$fe;sb[2]:=$fe;sb[3]:=$fe;
    sb[4]:=$68; sb[11]:=$68;
    sb[12]:=$01;sb[13]:=$02;
    sb[14]:=lo(CtrCode)+addsub;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区| 日韩欧美第一区| 欧美一区二区大片| 中文字幕电影一区| 91亚洲精品久久久蜜桃网站 | 午夜视频久久久久久| 亚洲成人动漫在线观看| 国产成人在线免费观看| 337p日本欧洲亚洲大胆精品| 亚洲男人的天堂在线aⅴ视频| 天天综合网 天天综合色| www..com久久爱| 日本一二三不卡| 国产在线精品一区二区三区不卡| 日韩三级视频中文字幕| 亚洲777理论| 91 com成人网| 精品一区二区三区在线观看国产| 欧美精品日日鲁夜夜添| 亚洲午夜在线观看视频在线| 在线观看一区日韩| 久久国产精品99久久久久久老狼| 91国偷自产一区二区三区成为亚洲经典 | 99久久精品99国产精品| 国产免费成人在线视频| 美国十次综合导航| 精品播放一区二区| 91一区二区在线| 五月激情综合网| 中文字幕成人av| 欧美午夜电影网| 国产毛片精品国产一区二区三区| 国产精品国模大尺度视频| 91蜜桃在线免费视频| 亚洲h精品动漫在线观看| 国产女人aaa级久久久级| 91传媒视频在线播放| 久久超碰97中文字幕| 亚洲欧美电影院| 久久精品网站免费观看| 欧美日韩国产欧美日美国产精品| 国产sm精品调教视频网站| 日韩制服丝袜av| 一区二区免费视频| 中文字幕va一区二区三区| 精品福利av导航| 在线精品视频小说1| 国产一区二区三区在线观看精品| 久久色视频免费观看| 欧美一区二区在线免费播放| 不卡的av网站| 日韩av中文字幕一区二区三区| 亚洲欧美在线高清| 欧美成人激情免费网| 日韩一区二区三区三四区视频在线观看| 99久久久免费精品国产一区二区| 国产一区 二区| 国产精品亚洲专一区二区三区 | 日韩一区二区三区三四区视频在线观看 | 色94色欧美sute亚洲线路一久| 9人人澡人人爽人人精品| 岛国精品在线观看| 国产老妇另类xxxxx| 国产精品99久久久久久宅男| 国产白丝网站精品污在线入口| 青青国产91久久久久久| 美洲天堂一区二卡三卡四卡视频| 蜜桃精品视频在线观看| 另类中文字幕网| 国产精品小仙女| 91视频一区二区三区| 欧美精品第1页| 国产日韩欧美制服另类| 欧美激情一区二区三区| 亚洲综合激情小说| 日产精品久久久久久久性色| 国产精品一区二区男女羞羞无遮挡| 成人午夜视频在线观看| 欧美艳星brazzers| 国产喂奶挤奶一区二区三区| www日韩大片| 亚洲国产一区在线观看| 激情图区综合网| 色偷偷一区二区三区| 欧美一区在线视频| 亚洲精品你懂的| 久久99精品国产麻豆不卡| 99久久99久久精品国产片果冻| 欧美揉bbbbb揉bbbbb| 中文天堂在线一区| 久久精品免费观看| av一本久道久久综合久久鬼色| 91精品国产欧美一区二区18| 曰韩精品一区二区| 99视频国产精品| 国产精品久久久久影院老司| 日韩成人午夜电影| 成人av电影在线网| 亚洲国产激情av| 韩日精品视频一区| 色婷婷激情综合| 欧美一区二区三区婷婷月色 | 亚洲成人av福利| 99热这里都是精品| 国产欧美日本一区二区三区| 午夜精品久久久久久久久| 色综合久久久网| 亚洲日穴在线视频| 91视频在线看| 亚洲精品乱码久久久久| 色综合天天在线| 亚洲亚洲精品在线观看| 一本色道a无线码一区v| 日韩精品久久理论片| 日韩欧美中文字幕精品| 国产乱子伦视频一区二区三区| 国产欧美日韩亚州综合| 一本高清dvd不卡在线观看 | 亚洲国产精品欧美一二99| 欧美极品xxx| 中文字幕在线一区二区三区| 亚洲6080在线| 2021久久国产精品不只是精品| 成人黄色电影在线| 久久精品一区二区三区不卡 | 国产肉丝袜一区二区| 91极品美女在线| 精品一区二区三区不卡| 精品国产乱码久久久久久免费| 国产精品激情偷乱一区二区∴| 成人午夜激情视频| 久久精品人人做人人爽人人| 免费黄网站欧美| 欧美日韩一区二区三区不卡| 一区二区三区在线视频观看 | 亚洲高清免费在线| 欧美在线短视频| 高清在线成人网| 国产精品二区一区二区aⅴ污介绍| 99久久免费精品| 亚洲影视在线播放| 日韩视频一区二区三区在线播放| 色综合久久99| av一区二区久久| 欧美日韩在线播放三区| 蜜臀91精品一区二区三区| 国产喷白浆一区二区三区| 91精品办公室少妇高潮对白| 美日韩一区二区| 国产精品国产三级国产有无不卡| 欧美卡1卡2卡| 日本视频在线一区| 欧美日韩国产天堂| 91视频在线观看| 99久久99精品久久久久久| 亚洲一二三四久久| 国产日韩精品视频一区| 久久久午夜电影| 欧美一区二区啪啪| 国产精品麻豆视频| 亚洲欧美日韩国产综合在线| 国内欧美视频一区二区| 精品视频一区二区三区免费| 91精品国产一区二区三区香蕉| 国产成人精品一区二区三区网站观看| 国产一区二区三区在线看麻豆| 精品综合免费视频观看| 国产精品一区不卡| 一本到三区不卡视频| 国产欧美一区二区三区网站| 亚洲午夜在线观看视频在线| 亚洲成人动漫在线观看| 一区二区成人在线视频| 欧美va在线播放| 94色蜜桃网一区二区三区| 色综合中文字幕国产 | 7777精品伊人久久久大香线蕉完整版| 欧美日韩中文字幕一区| 国产精品欧美综合在线| 日本在线播放一区二区三区| 激情偷乱视频一区二区三区| 色综合色综合色综合| 精品少妇一区二区| 蜜臀av性久久久久蜜臀aⅴ| 国产suv精品一区二区883| 欧美一区二区三区四区高清| 亚洲桃色在线一区| 国精产品一区一区三区mba视频| 欧美性色综合网| 夜夜揉揉日日人人青青一国产精品| 成人免费看视频| 亚洲国产精品二十页| 国产精品中文欧美| 久久久亚洲精华液精华液精华液| 国产蜜臀av在线一区二区三区| 亚洲免费av在线| 国精产品一区一区三区mba桃花 | 国产在线精品国自产拍免费| 午夜精品久久久久影视| 国产成人精品免费一区二区|