» »

C++

C++

strobos ::

Pozdravljeni.

Še vedno nisem rešil problema s pošiljanjem in sprejemanjem na COM portu.V Visual C++ funkcija _outp() in _inp() ne dela.V Dos-ovem C++ pa so funkcije outport in inport.Ima mogoče kdo kakšen program narejen s temi funkcijami ali pa tudi na kakšen drugačen način.

Lp
Sem že dvakrat stran odrezal,pa je še zmer prekratko!

madonch ::

Ali imaš msdn Library?

Tam je pod: Serial Communications, Win23

zelo dobro opisana serijska komunikacija s primeri.

Na port pišeš z WriteFile in ReadFile, kot bi pisal ali bral iz datoteke.

Poglej si in če ti kaj ne bo jasno vprašaj, bom poskusil pomagat, so pa s to serijsko komunikacijo vedno jajaca.
leposemejte :-)

strobos ::

MSDN library sem naložil danes,ker sem prej vse diske formatiral in potem vse na novo in sedaj imam tri operacijske sisteme in niti nimam časa.Bom pa pogledal in povedal,kako bo.Hvala!:))

Lp

Sem že dvakrat stran odrezal,pa je še zmer prekratko!

strobos ::

Sem iskal,pa nisem našel writefile in readfile.Našel sem samo nekaj za Visual Basic in sicer
MScomm1.CommPort=1
MScomm1.Settings="9600,N,8,1"
MScomm1.open=true

za odpiranje porta in nastavitve.Bi mi lahko kdo pomagal pri tem?Ni važno,če je v Visual Basicu ali v Visual C++.Rabil bi samo rutino,ki bi pošiljala in sprejemala podatke,naprej pa bom sam napisal svoj program.

Lp
Sem že dvakrat stran odrezal,pa je še zmer prekratko!

Senitel ::

Poglej si CreateFile, potem pa daš za ime datoteke "\\.\COM1" ali nekaj v tem smislu.

madonch ::

Pojdi v MSDN Library!

Klikni listič 'Search' !

V okence napiši (skopiraj) tale niz: "serial communications in win32"

(z navednicami vred) ter klikni 'list topics'.

Če tako še vedno ne boš nič našel, pa ti lahko jaz pošljem na kak mejl, če mi ga sporočiš.

Nasvet: če ti je Visual Basic bolj domač kot Visual C++, naredi to raje v Visual Basicu, ker je najbrž enostavneje.
leposemejte :-)

zdravcc ::

Sem ti program ze enkrat kazal, pa ti ga bom se enkrat!

zdravcc ::

#include "windows.h"


void main(void)
{

HANDLE hConIn, hConOut, hCommPort;
HANDLE hEvents[2];
DWORD dwCount;
DWORD dwWait;
COMMTIMEOUTS ctmoCommPort;
DCB dcbCommPort;
OVERLAPPED ov;
INPUT_RECORD irBuffer;
BOOL fInRead;
char c;
int i;


hConIn = CreateFile("CONINS$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
SetConsoleMode(hConIn, 0);
hConOut = CreateFile("CONOUTS$", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

hCommPort = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, 0);

ctmoCommPort.ReadIntervalTimeout = MAXDWORD;
ctmoCommPort.ReadTotalTimeoutMultiplier = MAXDWORD;
ctmoCommPort.ReadTotalTimeoutConstant = MAXDWORD;
ctmoCommPort.WriteTotalTimeoutMultiplier = 0;
ctmoCommPort.WriteTotalTimeoutConstant = 0;

SetCommTimeouts(hCommPort, &ctmoCommPort);
dcbCommPort.DCBlength = sizeof(DCB);
GetCommState(hCommPort, &dcbCommPort);
SetCommState(hCommPort, &dcbCommPort);
SetCommMask(hCommPort, EV_RXCHAR);

ov.Offset = 0;
ov.OffsetHigh = 0;
ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
hEvents[0] = ov.hEvent;
fInRead=FALSE;

while(1)
{

if (!fInRead)
while (ReadFile(hCommPort, &c, 1, &dwCount, &ov))
if (dwCount == 1)
WriteFile(hConOut, &c, 1, &dwCount, NULL);
fInRead = TRUE;

dwWait = WaitForMultipleObjects(dwCount, hEvents, FALSE, INFINITE);
switch (dwWait)
{

case WAIT_OBJECT_0:
if (GetOverlappedResult(hCommPort, &ov, &dwCount, FALSE))
if (dwCount == 1)
WriteFile(hConOut, &c, 1, &dwCount, NULL);
fInRead = FALSE;
break;

case WAIT_OBJECT_0 + 1:
ReadConsoleInput(hConIn, &irBuffer, 1, &dwCount);
if (dwCount == 1 && irBuffer.EventType == KEY_EVENT && irBuffer.Event.KeyEvent.bKeyDown)
for (i = 0; i < irBuffer.Event.KeyEvent.wRepeatCount; i++)
{
if (irBuffer.Event.KeyEvent.uChar.AsciiChar)
{
WriteFile(hCommPort, &irBuffer, 1, &dwCount, NULL);
if (irBuffer.Event.KeyEvent.uChar.AsciiChar == 24)
goto Konec;
}
}
}
}

Konec:

CloseHandle(ov.hEvent);
CloseHandle(hConIn);
CloseHandle(hConOut);
CloseHandle(hCommPort);




Evo to je, ta program posilja in sprejema iz com porta, ce bos reabil dodatno razlago ali komentarje me polklici se mi jih ni ljubilo pisat.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101568 (1365) BlueRunner
»

[C] MySQL

Oddelek: Programiranje
292708 (1730) Tutankhamun
»

[C/C++] Branje sektorjev

Oddelek: Programiranje
51215 (1063) yeti
»

[Winsock & C++]HTTP - Prenašanje binarne datoteke - recv()

Oddelek: Programiranje
71164 (1083) W3by
»

C++ in komunikacija preko LPT pod NT/W2k

Oddelek: Programiranje
101076 (889) Turbina

Več podobnih tem