📄 unit1.pas
字号:
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 + -