lz1 Temat założony przez niniejszego użytkownika |
Wysłanie stringa na port COM » 2013-12-02 19:17:24 Witam. Mam ogromny problem. Muszę napisać program, który będzie pobierał czas z zegara systemowego, zamieniał go na stringa, następnie tego stringa odwracał, dodawał na jego początek i koniec dwa znaki specjalne: "☻" oraz "♥", a następnie w takiej postaci przesyłał go na port COM, tak aby można go było odczytać po drugiej stronie kabelka RS-232. Oto co udało mi się napisać:
#include "stdafx.h" #include <Windows.h> #include <time.h> #include <stdio.h> #include <iostream> #include <string.h> #include <ctime> #include <sstream> #include <cstdlib>
using namespace std;
static DCB dcb;
static HANDLE hNumPort1; static HANDLE hNumPort2;
static char lpBuffor_read[ 33 ], lpBuffor_write[ 33 ];
static DWORD RS_ile; string czas;
int _tmain( int argc, _TCHAR * argv[] ) { hNumPort1 = CreateFile( TEXT( "COM2" ), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); hNumPort2 = CreateFile( TEXT( "COM6" ), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); dcb.DCBlength = sizeof( dcb ); dcb.BaudRate = CBR_9600; dcb.fParity = FALSE; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.ByteSize = 8; dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_ENABLE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; dcb.fDsrSensitivity = FALSE; dcb.fAbortOnError = FALSE; dcb.fOutX = FALSE; dcb.fInX = FALSE; dcb.fErrorChar = FALSE; dcb.fNull = FALSE; SetCommState( hNumPort1, & dcb ); SetCommState( hNumPort2, & dcb ); time_t rawtime; struct tm * timeinfo; char buffer[ 80 ]; time( & rawtime ); timeinfo = localtime( & rawtime ); strftime( buffer, 80, "%y%m%d%H%M%S", timeinfo ); string str( buffer ); czas = str; czas = string( czas.rbegin(), czas.rend() ); cout << czas; strcpy( lpBuffor_write, "TEST" ); WriteFile( hNumPort1, lpBuffor_write, strlen( lpBuffor_write ), & RS_ile, 0 ); ReadFile( hNumPort2, lpBuffor_read, 15, & RS_ile, 0 ); CloseHandle( hNumPort1 ); CloseHandle( hNumPort2 ); getchar(); return 0; }
Program działa o tyle, że przesyła wyraz "TEST" do COM-a, i widać go w hypertetminalu. Tyle że w funkcja pisząca do COM2 spodziewa się zmiennej typu char, na domiar złego te dwa znaki specjalne... Nie mam pojęcia jak je wstawić tak, żeby program je przyjął i przetransmitował. Proszę o pomoc. |
|
pekfos |
» 2013-12-02 19:29:20 string::c_str(), string::insert() i string::append(). |
|
lz1 Temat założony przez niniejszego użytkownika |
» 2013-12-02 19:55:46 A czy mógłbyś mi podpowiedzieć jak tego użyć w moim programie? Wybacz proszę, że pytam o to, ale moja sytuacja jest dość rozpaczliwa. Nie jestem programistą, nie potrafię programować, nie rozumiem programowania. Niestety mój szef uznał widać inaczej i stwierdził że dopóki tego przeklętego programu nie napiszę, jestem na bezpłatnym urlopie... Męczę się z tym już od kilku dni i chyba utknąłem... |
|
pekfos |
» 2013-12-02 20:36:04 Google? Podałem wszystkie potrzebne funkcje (w sumie wystarczą dwie z podanych). Wystarczy wyszukać. |
|
DejaVu |
» 2013-12-03 01:58:40 |
|
« 1 » |