Tags:
c++
php
danske
bogstaver
charset
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
0
Til slut i din while(1) loop har du en getchar(), denne venter på at du trykker enter.
Prøv at udskrive Counter et sted i loopen:
printf("Counter: %d\\n", Counter);
Og se om ikke den udskriver det når du trykker enter.
0
min kildekode:
#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("COM1", 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
printf("Counter: %d\\n", Counter);
dcb.fRtsControl = RTS_CONTROL_DISABLE;
SetCommState(ComPort, &dcb);
Counter++;
getchar();
}
CloseHandle(ComPort);
return 0;
}
Mit program i dos:
D:\\>lysmotor
D:\\>
0
Du skal flytte linien med printf en linie ned.
Hvad sker der når du trykker enter ?
0
Hej Bertel jeg var ved at opgive men så prøvede jeg her i dag og nu virkede det sku håber du stadig gider hjælpe min kode ser sådan ud:
#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("COM1", 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;
printf("Counter: %d\\n", Counter);
SetCommState(ComPort, &dcb);
Counter++;
getchar();
}
CloseHandle(ComPort);
return 0;
}
Du vil have jeg skal koble dem til pin 7 og pin 5 ikke og så prøve???
0
0
Tusind tak for alt din hjælp bertel! :-)