NEW VERSION FOR Z25:
Download here
Important!!!
Delphi 7 doesn't know TByte type as Adata in IdUDPServer1UDPRead
so i changed it to TStream, and it's work but compiler sometimes throw you this message:
Just click NO button
The Source Code:
I hope that it will be helpful for someone
Download here
Important!!!
Delphi 7 doesn't know TByte type as Adata in IdUDPServer1UDPRead
so i changed it to TStream, and it's work but compiler sometimes throw you this message:
Just click NO button
The Source Code:
{
******************************************************************************
In ENGLISH: (sorry for any mistakes;) )
Outgauge example for "Live for Speed" written by Radek Szewczyk
Contact: radekteam@gmail.com
GG: 1480359
Myspace: myspace.com/deejayradzio
If you've got any problems with this code just contact me. I try to help you ;)
Thanks to 4programmers.net users for any help.
Important: This program uses Indy10 Components for Delphi 7.
******************************************************************************
******************************************************************************
Po POLSKU:
Przyklad Outgauge dla "Live for Speed" napisany przez Radka Szewczyka
Kontakt: radekteam@gmail.com
GG: 1480359
Myspace: myspace.com/deejayradzio
Jezeli masz jakiekolwiek problemy z tym kodem poprostu sie ze mna skontaktuj.
Postaram sie Ci pomoc.
Podziekowania dla uzytkownikow 4programmers.net za wszelka pomoc.
Wazne: Ten program uzywa komponentow Indy10 dla Delphi 7.
******************************************************************************
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer,IdSocketHandle, StdCtrls,
ComCtrls, ExtCtrls, Gauges;
type
TPacket = record
Time: longint; // time in milliseconds (to check order)
Car: array[0..3] of char; // Car name
Flags: word; // OG_FLAGS
Gear: byte; // Reverse:0, Neutral:1, First:2...
SpareB: byte;
Speed: single; // M/S
RPM: single; // RPM
Turbo: single; // BAR
EngTemp: single; // C
Fuel: single; // 0 to 1
OilPress: single; // BAR
OilTemp: single; // C
DashLights: longint; // Dash lights available
ShowLights: longint; // Dash lights currently switched on
Throttle: single; // 0 to 1
Brake: single; // 0 to 1
Clutch: single; // 0 to 1
Display1: array[0..15] of char; // Usually Fuel
Display2: array[0..15] of char; // Usually Settings
ID: integer; // optional - only if GameID is specified
end;
TForm1 = class(TForm)
Label1: TLabel;
IdUDPServer1: TIdUDPServer;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label19: TLabel;
Image1: TImage;
Gauge1: TGauge;
Gauge2: TGauge;
Gauge3: TGauge;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox10: TCheckBox;
CheckBox11: TCheckBox;
CheckBox12: TCheckBox;
CheckBox13: TCheckBox;
CheckBox14: TCheckBox;
CheckBox15: TCheckBox;
CheckBox16: TCheckBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Memo1: TMemo;
Memo2: TMemo;
Label18: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
paczka: Tpacket;
gear_tmp:string;
const
// values for each light
DL_SHIFT = 1 ; // bit 0 - shift light
DL_FULLBEAM = 2 ; // bit 1 - full beam
DL_HANDBRAKE = 4 ; // bit 2 - handbrake
DL_PITSPEED = 8 ; // bit 3 - pit speed limiter
DL_TC = 16 ; // bit 4 - TC active or switched off
DL_SIGNAL_L = 32 ; // bit 5 - left turn signal
DL_SIGNAL_R = 64 ; // bit 6 - right turn signal
DL_SIGNAL_ANY = 128 ; // bit 7 - shared turn signal
DL_OILWARN = 256 ; // bit 8 - oil pressure warning
DL_BATTERY = 512 ; // bit 9 - battery warning
DL_ABS = 1024 ; // bit 10 - ABS active or switched off
DL_SPARE = 2048 ; // bit 11
DL_NUM = 4096 ; //noinfo
OG_TURBO = 8192 ; // show turbo gauge
OG_KM = 16384 ; // if 0 set - user prefers MILES
OG_BAR = 32768 ; // if 0 set - user prefers PSI
implementation
{$R *.dfm}
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
Adata.Read(paczka, sizeof(paczka));
label6.Caption :=paczka.Car;
gear_tmp:=intToStr(paczka.gear-1); //
if paczka.gear=1 then gear_tmp:= 'N'; // change gear values 0 and 1 to R and N
if paczka.gear=0 then gear_tmp:= 'R'; //
label12.Caption:=gear_tmp;
label7.Caption := FloatToStr(trunc(paczka.Speed / 0.27777778)) + ' Km/h';
label8.Caption := FloatToStr(trunc(paczka.RPM));
label9.Caption := FloatToStr(trunc(paczka.Turbo*100)) + ' BAR';
label10.Caption := FloatToStr(trunc(paczka.Fuel*100))+'.'+FloatToStr(trunc(paczka.Fuel*10000) - trunc(paczka.Fuel*100)*100 ) + ' %';
Gauge1.Progress:= trunc(paczka.Clutch*100);
Gauge2.Progress:= trunc(paczka.Brake*100);
Gauge3.Progress:= trunc(paczka.Throttle*100);
Label20.Caption:= FloatToStr(paczka.EngTemp) +' °C';
Label23.Caption:= FloatToStr(paczka.OilPress) +' BAR';
Label24.Caption:= FloatToStr(paczka.OilTemp) +' °C';
//////Flags//////
//-----------------------------------------------------//
//if shift light is switched on//
if (paczka.ShowLights AND DL_SHIFT) <> 0 then
CheckBox1.Checked:= True
else
CheckBox1.Checked:= False;
//if shift light is available on dash//
if (paczka.DashLights AND DL_SHIFT) <> 0 then
CheckBox1.Enabled:= True
else
CheckBox1.Enabled:= False;
//-----------------------------------------------------//
//if fullbeam is switched on//
if (paczka.ShowLights AND DL_FULLBEAM) <> 0 then
CheckBox2.Checked:= True
else
CheckBox2.Checked:= False;
//if fullbeam is available on dash//
if (paczka.DashLights AND DL_FULLBEAM) <> 0 then
CheckBox2.Enabled:= True
else
CheckBox2.Enabled:= False;
//-----------------------------------------------------//
//if handbrake is switched on//
if (paczka.ShowLights AND DL_HANDBRAKE) <> 0 then
CheckBox3.Checked:= True
else
CheckBox3.Checked:= False;
//if handbrake is available on dash//
if (paczka.DashLights AND DL_HANDBRAKE) <> 0 then
CheckBox3.Enabled:= True
else
CheckBox3.Enabled:= False;
//-----------------------------------------------------//
//if pit speed limiter is switched on//
if (paczka.ShowLights AND DL_PITSPEED) <> 0 then
CheckBox4.Checked:= True
else
CheckBox4.Checked:= False;
//if pit speed limiter is available on dash//
if (paczka.DashLights AND DL_PITSPEED) <> 0 then
CheckBox4.Enabled:= True
else
CheckBox4.Enabled:= False;
//-----------------------------------------------------//
//if Traction Control is switched on//
if (paczka.ShowLights AND DL_TC) <> 0 then
CheckBox5.Checked:= True
else
CheckBox5.Checked:= False;
//if Traction Control is available on dash//
if (paczka.DashLights AND DL_TC) <> 0 then
CheckBox5.Enabled:= True
else
CheckBox5.Enabled:= False;
//-----------------------------------------------------//
//if left turn signal is switched on//
if (paczka.ShowLights AND DL_SIGNAL_L) <> 0 then
CheckBox6.Checked:= True
else
CheckBox6.Checked:= False;
//if left turn signal is available on dash//
if (paczka.DashLights AND DL_SIGNAL_L) <> 0 then
CheckBox6.Enabled:= True
else
CheckBox6.Enabled:= False;
//-----------------------------------------------------//
//if right turn signal is switched on//
if (paczka.ShowLights AND DL_SIGNAL_R) <> 0 then
CheckBox7.Checked:= True
else
CheckBox7.Checked:= False;
//if right turn signal is available on dash//
if (paczka.DashLights AND DL_SIGNAL_R) <> 0 then
CheckBox7.Enabled:= True
else
CheckBox7.Enabled:= False;
//-----------------------------------------------------//
//if any turn signal is switched on//
if (paczka.ShowLights AND DL_SIGNAL_ANY) <> 0 then
CheckBox8.Checked:= True
else
CheckBox8.Checked:= False;
//if any turn signal is available on dash//
// if (paczka.DashLights AND DL_SIGNAL_ANY) <> 0 then
// CheckBox8.Enabled:= True
// else
// CheckBox8.Enabled:= False;
//-----------------------------------------------------//
//if oil pressure warning is switched on//
if (paczka.ShowLights AND DL_OILWARN) <> 0 then
CheckBox9.Checked:= True
else
CheckBox9.Checked:= False;
//if oil pressure warning is available on dash//
if (paczka.DashLights AND DL_OILWARN) <> 0 then
CheckBox9.Enabled:= True
else
CheckBox9.Enabled:= False;
//-----------------------------------------------------//
//if battery warning is switched on//
if (paczka.ShowLights AND DL_BATTERY) <> 0 then
CheckBox10.Checked:= True
else
CheckBox10.Checked:= False;
//if battery warning is available on dash//
if (paczka.DashLights AND DL_BATTERY) <> 0 then
CheckBox10.Enabled:= True
else
CheckBox10.Enabled:= False;
//-----------------------------------------------------//
//if ABS is switched on//
if (paczka.ShowLights AND DL_ABS) <> 0 then
CheckBox11.Checked:= True
else
CheckBox11.Checked:= False;
//if ABS is available on dash//
if (paczka.DashLights AND DL_ABS) <> 0 then
CheckBox11.Enabled:= True
else
CheckBox11.Enabled:= False;
//-----------------------------------------------------//
//if Turbo Gauge is available//
if (paczka.Flags AND 8192) <> 0 then //show Turbo Gauge
CheckBox14.Checked:= True
else
CheckBox14.Checked:= False;
//-----------------------------------------------------//
//if KM is set//
if (paczka.Flags AND 16384) <> 0 then //users prefers km
CheckBox15.Checked:= True
else
CheckBox15.Checked:= False;
//-----------------------------------------------------//
//if BAR is set//
if (paczka.Flags AND 32768) <> 0 then //users prefers bar
CheckBox16.Checked:= True
else
CheckBox16.Checked:= False;
memo1.Text:=paczka.Display1;
memo2.Text:=paczka.Display2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.DefaultPort := 11111;
IdUDPServer1.Active := true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdUDPServer1.Active:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IdUDPServer1.DefaultPort := 11111;
IdUDPServer1.Active := true;
end;
end.
I hope that it will be helpful for someone