Jeden program - ró?żne Windozy ?

0

:|
Jeden program - różne Windowsy

Mam pewien problem z programem po przeniesieniu na Win XP.
Program był skompilowany pod Win2000 ale działał do tej pory bez problemów na 98,NT i 2000 , Win 95 wymagało zainstalowania i odinstalowania Delphi.
Niestety pod XP program uruchamia się , ale przy próbie dostepu do portów szerwgowych COM nic się nie dzieje.

Czy w XP coś się zmieniło zasadniczo w obsłudze transmisji szeregowej ?
Czy bedę musiał zainstalowaćsobie XP i tam skompilować cały projekt ?
Czy można stworzyć program który zadziała na RS-ach pod każdą z wersji Windowsa?

0

Czy bedę musiał zainstalowaćsobie XP i tam skompilować cały projekt ?

Cóż jest najpewniejszy sposób ;p
Ja bym tak zrobił, bo nie znam odpowiedzi na pozostałe pytania :-)

0

Acces do comów jest na XP wyjątkowo ograniczony... Należy użyć czegoś jak CPortLib lub ZLPortIO

0

<quote> :|
Jeden program - różne Windowsy

Mam pewien problem z programem po przeniesieniu na Win XP.
Program był skompilowany pod Win2000 ale działał do tej pory bez problemów na 98,NT i 2000 , Win 95 wymagało zainstalowania i odinstalowania Delphi.
Niestety pod XP program uruchamia się , ale przy próbie dostepu do portów szerwgowych COM nic się nie dzieje.

<font color="black">Hej miałem podobny problem
mój programik kompilowałem pod W98, ale działa również pod Win2000 i XP. Do portu COM nie można się odwołać bezpośrednio tylko przez drivery.
<font color="black">Potrzebujesz do poszczególnych nóżek portu czy standartową </span>komunikację szeregową?

0

Potrzebuję normalnego RS

A propos czy jest jakiś prosty sposób by program rozpoznawał system pod którym pracuje i uruchamiał prawidłową obsługę portów ?

0

Potrzebuję normalnego RS

A propos czy jest jakiś prosty sposób by program rozpoznawał system pod którym pracuje i uruchamiał prawidłową obsługę portów ?

Sprawdzenie czy to WinNT:
if Win32Platform = VER_PLATFORM_WIN32_NT then.....

Obsługa normalnego RS (ze strony www.delphi.cartall.com.pl/index.html)

procedure TForm.Button1Click(Sender : TObject);
var hCOM:THandle;
nrWrit:DWORD;
nrRead:DWORD;
Errors:DWORD;
Dcb:TDCB;
ComStat:TComStat;
buf:array[0..2048] of char;
begin
//Otwarcie łącza COM
hCOM:=CreateFile('COM3',GENERIC_WRITE OR GENERIC_READ,0,nil,OPEN_EXISTING,0,0);

//Ustawienie parametrów transmisji - jak MODE w DOS'ie
if hCOMINVALID_HANDLE_VALUE then
begin
GetCommState(hCOM,Dcb);
BuildCommDCB('19200,n,8,2',Dcb);
SetCommState(hCOM,Dcb);
end
else
begin
ShowMessage('Błąd otwarcia portu COM : '+IntToStr(GetLastError()));
Exit;
end;

try
//Przygotowanie bufora
ZeroMemory(@buf,SizeOf(buf));
StrCopy(buf,'AT&V'+#13+#10);

//Zapis bufora
if not WriteFile(hCOM,buf,StrLen(buf),nrwrit,nil) then
ShowMessage('Błąd zapisu do portu COM.');

//Sprawdzenie czy jest coś w buforze COM
ClearCommError(hCOM,Errors,@ComStat);

//Odczytanie bufora gdy są dane
if ComStat.cbInQue>0 then
ReadFile(hCOM,buf,ComStat.cbInQue,nrRead,nil);
finally
CloseHandle(hCOM);
end;
end;

powinno iść niezależnie od sytemu.

0

SERDECZNIE Dziękuję.

Ostatni post mnie zaintrygował , poczytałem trochę i już mam efekty.
Program działa pod wszystkimi windozami ( no może prawie bo na NT nie sprawdzałem )

Jeszcz raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1