关键的接收代码(双击SPCOMM控件的ReceiveData事件):
- procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
- BufferLength: Word);
- var
- checksum:byte;
- number:byte;
- begin
- setlength(receive_data,BufferLength); // 根据接收的长度,设置数组大小
- receive_data := Buffer; // 取得数据
- checksum := 0;
- for number:=0 to (bufferlength -2) do checksum:=checksum + receive_data[number]; // 计算校验和
- if (checksum = receive_data[bufferlength -1]) then // 校验和合法,则进行接收后的处理
- begin
- case receive_data[3] of
- $00:
- begin
- BitBtn3.Glyph.LoadFromFile(green_dark_file); // 下一行的绿色LED 灭
- BitBtn4.Glyph.LoadFromFile(blue_dark_file); // 下一行的蓝色LED 灭
- end;
- $01:
- begin
- BitBtn3.Glyph.LoadFromFile(green_light_file); // 下一行的绿色LED亮
- BitBtn4.Glyph.LoadFromFile(blue_dark_file); // 下一行的蓝色LED 灭
- end;
- $02:
- begin
- BitBtn3.Glyph.LoadFromFile(green_dark_file); // 下一行的绿色LED 灭
- BitBtn4.Glyph.LoadFromFile(blue_light_file); // 下一行的蓝色LED 亮
- end;
- $03:
- begin
- BitBtn3.Glyph.LoadFromFile(green_light_file); // 下一行的绿色LED亮
- BitBtn4.Glyph.LoadFromFile(blue_light_file); // 下一行的蓝色LED 亮
- end;
- end;
- end;
- setlength(receive_data,0); // 释放资源
- end;
这里接收后的处理仅是作为例证。
绿色LED 灭,蓝色LED 灭
绿色LED亮,蓝色LED 灭
绿色LED 灭,蓝色LED 亮
绿色LED亮,蓝色LED 亮
到此,串行通信的Lazarus代码解析完毕。
|