var
Form1: TForm1;
bSucc: Boolean;//判断是否为字幕卡
Wsa: TWSAData;
addr_to: sockaddr_in;
FSocket: TSocket;
implementation
uses IdGlobal,IdStack,StrUtils;
const
UdpBroadCastPort:integer=2854;//5555;//7777;//广播端口
UdpScreenMainPort:integer=2059;//6666;//8888;//屏幕传输端口
SystemMsg_Online:String='Online';
SystemMsg_Offline:String='Offline';
SystemMsg_ShowScrText:String='ShowScrText';
SystemMsg_HideScrText:String='HideScrText';
ErrMsg_SockInit
![Stick Out Tongue :P :P](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f61b.png)
char='初始化WinSocket失败!请检查您是否安装了网卡及TCP/IP协议!';
ErrMsg_SockBroadCast
![Stick Out Tongue :P :P](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f61b.png)
char='绑定网络广播失败!请检查您是否安装了网卡及TCP/IP协议,是否连接上网络!';
ErrMsg_ScreenConnet
![Stick Out Tongue :P :P](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f61b.png)
char='无法与主机建立连接!';
..............
procedure TForm1.ShowTextToScr(Str:String);
var
letters: array[0..249, 0..1] of byte;
letters_num: byte;
checksum: byte;
instring: string;
a1, a2, m, n, i: integer;
t: dword;
begin
letters_num := length(Str) div 2;
if letters_num > 0 then
for i := 1 to letters_num do
begin
a1 := ord(Str[i * 2 - 1]);
a1 := a1 * 256 + ord(Str[i * 2]);
a2 := a1 + 24159 + 256;
m := Trunc(a2 / 256);
n := a2 - m * 256 + 1;
letters[i - 1, 0] := m;
letters[i - 1, 1] := n;
end;
bSucc:=False;
SendDataToPort('AA');
//MSComm1.Output:=Char($AA);//$AA+$0d;//OutPut属性只写入缓冲区,并没有发出去.必须写入回车符.
while MSComm1.OutBufferCount>0 do Application.ProcessMessages;//如果写操作没有完成则等待
t:=GetTickCount;
While GetTickCount-t<1000 do
begin
if bSucc then Break;//成功返回
Application.ProcessMessages;
end;
SendDataToPort(inttohex(letters_num,0));
while MSComm1.OutBufferCount>0 do Application.ProcessMessages;//如果写操作没有完成则等待 }
checksum := letters_num;
for i := 1 to letters_num do
begin
checksum := checksum xor letters[i - 1, 0];
SendDataToPort(inttohex(letters[i - 1, 0],0));
checksum := checksum xor letters[i - 1, 1];
............