Przesyłanie RS 232

0

Mam taki fragment programu, który przesyła com'em znak (char). Potrzebuję jak najszybciej się dowiedzieć w jaki sposób przesłać liczbę binarnie a nie jako znak ASCII.

void wyslij(char znak)
{
outportb(0x3e8,znak); //wyswylamy
char flagi=0;
do
{
flagi=inportb(0x3ed); //czekamy az powie ze wyslal
}while(!(flagi&0x20));
}

0

Musisz najpierw zamienić na system dziesiętny i wrzucić do zmiennej char. Możesz to zrobić np. taką funkcją:

function bintodec(Liczba: string): Integer;
var
n: Integer;
begin
result:=0;
for n:=1 to length(liczba) do
result:=result+round(strtoint(liczba[n])*power(2, (8-n)));
end;

Jest w pascalu, ale nie powinno być problemu z przeróbką.

0

Dziękuję bardzo :) [soczek]

0

Joanno W.:

nie wiem czy dobrze zrozumiałem ale. Potrzebujesz wpisac liczbe zamiast znaku do funkcji wyslij?

jesli tak to wez pod uwage ze char wcale nie jest znakiem ascii tylko po prosty jednobajtowa jednostka ktora akceptuje zapis 0-255, a w jaki sposób napiszesz sobie w tym jednym bajcie to juz naprawde nie ma znaczenia

czy napiszesz wyslij(50), czy wyslij('a'), czy wyslij(01010001b) czy wyslij(0x42)
czyli w zakresie tego samego rozmiaru mozesz pisac w dowolnej postacji

nie potrzebujesz konwersji, ani zamiany na system 2 dziesietny czy inny nawet...

best R.
Yuri

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