Serial programmering

Tags:    c++ php danske bogstaver charset

<< < 123 > >>
Hej jeg har fået lavet en motor til computeren som er koblet med plus til pin 3 på min serial port(com1) og minus benet er koblet til pin 5 stel forbindelsen! Men nu vil jeg gerne lave et program så jeg kan få motoren til at køre er der evt. nogle der kan lave et program for mig??? og forklare mig hvordan det virker! helst i c/c++ da jeg har en lille smule kendskab til det!!! håber nogle kan hjælpe!

Hilsen Johan



26 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Og du har ændret COM2 til COM1 i kaldet til CreateFile?

Jeg må vist hellere finde mit voltmeter frem...



Nej kan ikke helt finde ud af det hvor er det jeg skal skrive Createfile???




I staten af main er der:

HANDLE ComPort = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

Her skal "COM2" ændres til "COM1".



Jeg testede lige.
Jeg tror at det bedste er at bruge RTS porten (ben 7).

Hvis du skipper TX-loopen og laver følgende loop, bør du kunne toggle porten høj/lav (i forhold til GROUND), hver gang du trykker ENTER:

int Counter = 0;
while(1)
{
if(Counter & 1)
dcb.fRtsControl = RTS_CONTROL_ENABLE;
else
dcb.fRtsControl = RTS_CONTROL_DISABLE;
SetCommState(ComPort, &dcb);
Counter++;
getchar();
}



Så kommer c++ koden til at sådan ud jeg prøver det lige af:

#include <stdio.h>
#include <windows.h>

void SetTimeOut(HANDLE Port, int sec)
{
COMMTIMEOUTS commtimeouts;
GetCommTimeouts(Port, &commtimeouts);
commtimeouts.ReadIntervalTimeout = 1000*sec;
commtimeouts.ReadTotalTimeoutMultiplier = 10;
commtimeouts.ReadTotalTimeoutConstant = 1000*sec;
SetCommTimeouts(Port, &commtimeouts);
}

void Tx(HANDLE Port, const char *data)
{
DWORD Dummy;
WriteFile(Port, data, strlen(data), &Dummy, 0);
WriteFile(Port, "\\r\\n", 2, &Dummy, 0);
}

void Rx(HANDLE Port)
{
char Buffer[128];
DWORD Length, i;

ReadFile(Port, Buffer, 128, &Length, 0);

for(i = 0; i < Length; i++)
if(Buffer != '\\r')
printf("%c", Buffer);
}

int main(void)
{
DCB dcb;
HANDLE ComPort = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

GetCommState(ComPort, &dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
dcb.fOutxCtsFlow = 1;
SetCommState(ComPort, &dcb);
SetTimeOut(ComPort, 1);

int Counter = 0;
while(1)
{
if(Counter & 1)
dcb.fRtsControl = RTS_CONTROL_ENABLE;
else
dcb.fRtsControl = RTS_CONTROL_DISABLE;
SetCommState(ComPort, &dcb);
Counter++;
getchar();
}

CloseHandle(ComPort);

return 0;
}





Jeg har prøvet at sætte den til pin 7 og pin 5 og så prøvede jeg det program! men den giver ikke anderledes strøm den står bare på omkring -10.02 volt!!!

[Redigeret d. 28/12-04 12:09:59 af Johan]



Du har stadig ikke fået rettet "COM2" til "COM1"



Jeg har rettet det nu og jeg kan stadig ikke få det til at virke jeg tror jeg giver op kan det overhovedet lade sig gøre??? Hmm hva for en uddanelse tror du man skal tage for at lære sådan noget og om modstande og det der???



Det skal kunne bringes til at virke. Hos mig skifter den mellem + og - 10 volt, når jeg trykker på en tast.

Jeg er ingeniør, og har lært om "modstande og det der".

Hos http://www.brinck.dk/ kan man købe byggesæt der er beregnet til at tilkoble com-porten.



Hmm hvordan virker c++ programmet ved dig når jeg i dos skriver "motor" som er navnet på programmet så viser den dette

C:\\>Motor

C:\\>

den springer nærmest bare en linie ned du snakker noget om at du trykker på en tast og sådan så det kan da ikke være det samme???



<< < 123 > >>
t