⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 上海高架路指示牌
💻 PAS
📖 第 1 页 / 共 3 页
字号:
end;


procedure TForm1.GetColor(Sender: TObject);
begin
if (Sender as TShape).Brush.Color = clblack then
       Memo1.Lines.Add('00') else
   if (Sender as TShape).Brush.Color = clLime then
       Memo1.Lines.Add('01') else
   if (Sender as TShape).Brush.Color = clRed then
       Memo1.Lines.Add('10') else
   if (Sender as TShape).Brush.Color = clYellow then
       Memo1.Lines.Add('11');
end;

procedure TForm1.SpeedButton15Click(Sender: TObject);
var SendData: array[0..8] of byte;
    StrTmp:String;
    i:integer;
begin
Label21.Caption :='';

if ComboBox2.ItemIndex = 7 then
   StrTmp := IntToHex(ComboBox2.ItemIndex * 9 +1 ,2)
else
   StrTmp := IntToHex(ComboBox2.ItemIndex * 9 ,2);

SendData[0]:= $9A;
SendData[1]:= $02;
SendData[2]:= Byte(StrTmp[2]);
SendData[3]:= Byte(StrTmp[1]);
SendData[4]:= $02 xor Byte(StrTmp[2]) Xor Byte(StrTmp[1]);
SendData[5]:= $9F;

for i := 0 to  5 do
  ApdComPort1.PutChar(char(SendData[i]));

SendData[0]:= $00;
SendData[1]:= $00;
SendData[2]:= $4B;
SendData[3]:= $53;
SendData[4]:= $55;
SendData[5]:= $AA;
SendData[6]:= $02;

if ComboBox2.ItemIndex = 7 then
   SendData[7]:= BYTE($18)
else
   SendData[7]:= BYTE((7 - ComboBox2.ItemIndex));

SendData[8] := SendData[7] ;

for i := 0 to  8 do
  ApdComPort1.PutChar(char(SendData[i]));

end;

procedure TForm1.SendStauts;
var i:integer;
    chksum:byte;
begin
StautsData[0]:= $9a;
StautsData[1]:= $01;

StautsData[2]:= byte(ChrA);
StautsData[3]:= byte(ChrB);
StautsData[4]:= byte(ChrC);
StautsData[5]:= byte(ChrD);

chksum := StautsData[1] xor StautsData[2] xor
          StautsData[3] xor StautsData[4] xor
          StautsData[5] ;

stautsData[6] := chksum;
StautsData[7] := $9F;

abcBusy1.Caption :=  '流量信息' + ' -- 传输信号';
abcBusy1.Show;
abcBusy1.ProgressMax := 8 * 10;
abcBusy1.ProgressMin := 0;

for i:= 0 to 7 do
  begin
    ApdComPort1.PutChar(char(StautsData[i]));
    abcBusy1.StepIt;
  end;

abcBusy1.Hide;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Label21.Caption := '';
SpeedButton7.Click;
SendStauts;
end;

procedure TForm1.ApdComPort1Trigger(CP: TObject; Msg, TriggerHandle,
  Data: Word);
var
  I : Word;
  C : Char;
  S, strX:string;
begin
  strx:='';
  S:='';
  case Msg of
    apw_TriggerData :
      {got 'login', send response}
      (CP as TApdComPort).PutString('myname');
    apw_TriggerAvail :
       begin
            for i := 0  to Data - 1 do
              begin
               C := (cp as TApdComPort).GetChar;
               if byte(C) = $F0 then Label21.Caption := '流量信息发送正确!';
               if byte(C) = $0F then Label21.Caption := '流量信息发送错误!';
               if byte(C) = $60 then Label21.Caption := '指示牌信息发送正确!';
               if byte(C) = $61 then Label21.Caption := '指示牌信息发送超时!';
               if byte(C) = $62 then Label21.Caption := '指示牌信息校验错误!';
               if byte(C) = $63 then Label21.Caption := '指示牌信息通讯溢出!';
               if byte(C) = $64 then Label21.Caption := '指示牌信息不兼容!';

//               {if I = (data -1) then} showmessage(inttoHex(byte(C),2));
              end;
            with cp as TApdComPort do
              begin
                FlushInBuffer;
                FlushOutBuffer;
              end;
      end;

    apw_TriggerTimer : beep ;
        {timed out waiting for login prompt, handle error}
    //  timeout;
  end;
end;

procedure TForm1.N35Kmh1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速35.bmp');
end;

procedure TForm1.N40Kmh1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速40.bmp');
end;

procedure TForm1.N60Kmh1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速60.bmp');
end;

procedure TForm1.N80Kmh1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速80.bmp');
end;

procedure TForm1.N1001Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速100.bmp');
end;

procedure TForm1.N1201Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\限速120.bmp');
end;

procedure TForm1.Panel6Click(Sender: TObject);
begin
Label20.Caption := '';
end;

procedure TForm1.N10Click(Sender: TObject);
begin
Image1.Canvas.Brush.Color := clBlack;
Image1.Canvas.FillRect(Image1.ClientRect);
end;

procedure TForm1.N13Click(Sender: TObject);
begin
Image2.Canvas.Brush.Color := clBlack;
Image2.Canvas.FillRect(Image1.ClientRect);
end;

procedure TForm1.SendPictures(Id, Effect: Byte; Img: TImage;
  Data: array of TDatBitmap);

var Senddata :array[0..$FFFF] of Byte;
    I,J,n,L:integer;
    Chksum:Word;

begin
ApdComPort1.FlushInBuffer;
ApdComPort1.FlushOutBuffer;

Senddata[0]:=$00;   //Id_start_Code
Senddata[1]:=$00;   //Id_End_Code
Senddata[2]:=$4B;   //Ascii "K"
Senddata[3]:=$53;   //AscII "S"
Senddata[4]:=$55;   // Header
Senddata[5]:=$AA;   // Header
Senddata[6]:=$00;   // Command_program

Senddata[7] :=$43;  // low  length commandbuff
Senddata[8] :=$00;  // High length commandbuff
Senddata[9] :=$00;  // low  No. Page
Senddata[10]:=$00;  // High No. Page
Senddata[11]:=lo(($04 + Length(Data[0].Data))*4);  //  L0 length pattern buffer
Senddata[12]:=hi(($04 + Length(Data[0].Data))*4);  //  Hi Length Pattern Buffer

Senddata[13]:=$09;   // command Clear Screen
Senddata[14]:=$05;   // command picture
Senddata[15]:=$01;   // lo(Effect); // lo instant
Senddata[16]:=$00;   // Hi(Effect); // Hi
Senddata[17]:=$09;   // lo speed
Senddata[18]:=$00;   // Hi
Senddata[19]:=$00;   // lo X1 : 0
Senddata[20]:=$00;   // hi
Senddata[21]:=$00;   // lo Y1 : 0
Senddata[22]:=$00;   // hi
Senddata[23]:=$00;   // Lo Fist page pattern Start Address
Senddata[24]:=$00;   // hi
Senddata[25]:=$00;   // lo Offset in page Pattern  buffer
Senddata[26]:=$00;   // Hi
Senddata[27]:=$16;   // command Delay
Senddata[28]:=lo($FFFF); // lo delay Time
Senddata[29]:=hi($FFFF); // hi

Senddata[30]:=$05;   // command picture
Senddata[31]:=$01;   // lo(Effect); // lo instant
Senddata[32]:=$00;   //Hi(Effect); // Hi
Senddata[33]:=$09;   // lo speed
Senddata[34]:=$00;   // Hi
Senddata[35]:=$00;   // lo X1 : 0
Senddata[36]:=$00;   // hi
Senddata[37]:=$00;   // lo Y1 : 0
Senddata[38]:=$00;   // hi
Senddata[39]:=$00;   // Lo Fist page pattern Start Address
Senddata[40]:=$00;   // hi
Senddata[41]:= lo($04 + Length(Data[0].Data));   // lo Offset in page Pattern  buffer
Senddata[42]:= hi($04 + Length(Data[0].Data));   // Hi


Senddata[43]:=$16;   // command Delay Time
Senddata[44]:=lo($FFFF); // lo delay Time
Senddata[45]:=Hi($FFFF); // hi

Senddata[46]:=$05;   // command picture
Senddata[47]:=$01;   // lo(Effect); // lo instant
Senddata[48]:=$00;   //Hi(Effect); // Hi
Senddata[49]:=$09;   // lo speed
Senddata[50]:=$00;   // Hi
Senddata[51]:=$00;   // lo X1 : 0
Senddata[52]:=$00;   // hi
Senddata[53]:=$00;   // lo Y1 : 0
Senddata[54]:=$00;   // hi
Senddata[55]:=$00;   // Lo Fist page pattern Start Address
Senddata[56]:=$00;   // hi
Senddata[57]:= lo(($04 + Length(Data[0].Data))*2);   // lo Offset in page Pattern  buffer
Senddata[58]:= hi(($04 + Length(Data[0].Data))*2);   // Hi


Senddata[59]:=$16;   // command Delay Time
Senddata[60]:=lo($FFFF); // lo delay Time
Senddata[61]:=Hi($FFFF); // hi

Senddata[62]:=$05;   // command picture
Senddata[63]:=$01;   // lo(Effect); // lo instant
Senddata[64]:=$00;   //Hi(Effect); // Hi
Senddata[65]:=$09;   // lo speed
Senddata[66]:=$00;   // Hi
Senddata[67]:=$00;   // lo X1 : 0
Senddata[68]:=$00;   // hi
Senddata[69]:=$00;   // lo Y1 : 0
Senddata[70]:=$00;   // hi
Senddata[71]:=$00;   // Lo Fist page pattern Start Address
Senddata[72]:=$00;   // hi
Senddata[73]:= lo(($04 + Length(Data[0].Data))*3);   // lo Offset in page Pattern  buffer
Senddata[74]:= hi(($04 + Length(Data[0].Data))*3);   // Hi


Senddata[75]:=$16;   // command Delay Time
Senddata[76]:=lo($FFFF); // lo delay Time
Senddata[77]:=Hi($FFFF); // hi


{Senddata[78]:=$05;   // command picture
Senddata[79]:=$01;   // lo(Effect); // lo instant
Senddata[80]:=$00;   //Hi(Effect); // Hi
Senddata[81]:=$09;   // lo speed
Senddata[82]:=$00;   // Hi
Senddata[83]:=$00;   // lo X1 : 0
Senddata[84]:=$00;   // hi
Senddata[85]:=$00;   // lo Y1 : 0
Senddata[86]:=$00;   // hi
Senddata[87]:=$00;   // Lo Fist page pattern Start Address
Senddata[88]:=$00;   // hi
Senddata[89]:= lo(($04 + Length(Data[0].Data))*4);   // lo Offset in page Pattern  buffer
Senddata[90]:= hi(($04 + Length(Data[0].Data))*4);   // Hi


Senddata[91]:=$16;   // command Delay Time
Senddata[92]:=lo($FFFF); // lo delay Time
Senddata[93]:=Hi($FFFF); // hi    }


Senddata[78]:=$17;   // End Command
Senddata[79]:=$17;   // end Command buff with end command

case Img.Tag of
0: begin
     Senddata[80]:=$A0;   // lo Width Bitmap
     Senddata[81]:=$00;   // hi
     Senddata[82]:=$30;   // Lo height bitmap
     Senddata[83]:=$00;   // hi
     abcBusy1.Caption :=  '指示牌信息' + ' -- 传输信号';
   end;
1: begin
     Senddata[80]:=$30;   // lo Width Bitmap
     Senddata[81]:=$00;   // hi
     Senddata[82]:=$20;   // Lo height bitmap
     Senddata[83]:=$00;   // hi
     abcBusy1.Caption :=  '娄山关路入口状态' + ' -- 传输信号';
   end;
end;

for n := 0 to 3 do
   begin
   for I := 0 to Length(Data[n].Data) -1 do
      begin
         case n of
           0: begin
                Senddata[84 + I + n*(Length(Data[n].Data))] := Data[n].Data[I];
              end;
           1: begin
                if i = 0 then
                   begin
                     Senddata[84 + I + n*(Length(Data[n].Data))]:= $A0;
                     Senddata[85 + I + n*(Length(Data[n].Data))]:= $00;
                     Senddata[86 + I + n*(Length(Data[n].Data))]:= $30;
                     Senddata[87 + I + n*(Length(Data[n].Data))]:= $00;
                   end;
                Senddata[88 + I + n*(Length(Data[n].Data))] := Data[n].Data[I];
              end;
           2: begin
                if i = 0 then
                   begin
                     Senddata[88 + I + n*(Length(Data[n].Data))]:= $A0;
                     Senddata[89 + I + n*(Length(Data[n].Data))]:= $00;
                     Senddata[90 + I + n*(Length(Data[n].Data))]:= $30;
                     Senddata[91 + I + n*(Length(Data[n].Data))]:= $00;
                   end;
                Senddata[92 + I + n*(Length(Data[n].Data))] := Data[n].Data[I];
              end;
           3: begin
                if i = 0 then
                   begin
                     Senddata[92 + I + n*(Length(Data[n].Data))]:= $A0;
                     Senddata[93 + I + n*(Length(Data[n].Data))]:= $00;
                     Senddata[94 + I + n*(Length(Data[n].Data))]:= $30;
                     Senddata[95 + I + n*(Length(Data[n].Data))]:= $00;
                   end;
                Senddata[96 + I + n*(Length(Data[n].Data))] := Data[n].Data[I];
              end;
{           4: begin
                if i = 0 then
                   begin
                     Senddata[112 + I + n*(Length(Data[n].Data))]:= $A0;
                     Senddata[113 + I + n*(Length(Data[n].Data))]:= $00;
                     Senddata[114 + I + n*(Length(Data[n].Data))]:= $30;
                     Senddata[115 + I + n*(Length(Data[n].Data))]:= $00;
                   end;
                Senddata[116 + I + n*(Length(Data[n].Data))] := Data[n].Data[I];
              end;  }
           end;
      end;
   end;
Chksum := $00;



for j := 7 to (96 + Length(Data[0].Data)*4 -1) do
  Chksum := Chksum + Senddata[j];

Senddata[97 + Length(Data[0].Data)*4 -1] := lo(Chksum);



abcBusy1.Show;
abcBusy1.ProgressMax := (97 + Length(Data[0].Data)*4) * 10;
abcBusy1.ProgressMin := 0;

for L := 0 to (97 + Length(Data[0].Data)*4 -1) do
begin
  ApdComPort1.PutChar(char(senddata[L]));
  Sleep(1);
  abcBusy1.StepIt;
end;

abcBusy1.Hide;
end;

procedure TForm1.SpeedButton16Click(Sender: TObject);
var SendData: array[0..5] of byte;
    i:integer;
begin
Label21.Caption := '';
N4.Click;
GetPictureData(Image1,BpParam[0].data);
N5.Click;
GetPictureData(Image1,BpParam[1].data);
N15.Click;
GetPictureData(Image1,BpParam[2].data);
N40kmh1.Click;
GetPictureData(Image1,BpParam[3].data);
SendPictures(0,0,Image1,BpParam);
 
SendData[0]:= $9A;
SendData[1]:= $03;
SendData[2]:= byte('F');
SendData[3]:= byte('F');
SendData[4]:= $03 xor byte('F') xor byte('F');
SendData[5]:= $9F;

for i := 0 to  5 do
  ApdComPort1.PutChar(char(SendData[i]));

end;

procedure TForm1.N14Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\禁止通行.bmp');
end;

procedure TForm1.N15Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\道路拥阻.bmp');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -