lukisp2 Temat założony przez niniejszego użytkownika |
odbiór danych z rs 232 » 2015-07-24 15:47:29 Witam. Dawno nie programowałem i mam problemy z podstawami. Przerobiłem kurs c++ na stronie i teraz próbuje swoich sił w napisaniu programu, który będzie odbierał depesze NMEA z portu szeregowego. Czy może mi ktoś powiedzieć jak mam skorzytać z tego opisu na stronie: https://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx i jak się za to zabrać? |
|
pekfos |
» 2015-07-24 15:50:48 To zła dokumentacja, jeśli chcesz to zrealizować w C++. |
|
lukisp2 Temat założony przez niniejszego użytkownika |
» 2015-07-24 15:58:51 Ok, a gdzie znaleźć prawidłową dokumentacje? |
|
pekfos |
» 2015-07-24 16:17:42 |
|
lukisp2 Temat założony przez niniejszego użytkownika |
» 2015-07-24 16:49:11 No niestety mam za małe doświadczenie, żeby korzystać z tej dokumentacji. Możecie mnie jakoś pokierować od czego zacząć? |
|
pekfos |
» 2015-07-24 17:06:30 Od podstaw, potem dokumentacji. |
|
lukisp2 Temat założony przez niniejszego użytkownika |
» 2015-07-24 20:35:19 To są moje wypociny z pomocą googla. Czy możecie mi poradzić jak przerobić to co idzie na ekran w string? Potrzebuję tych danych otrzymywanych z portu szeregowego do dalszych obliczeń. #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string.h> #define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h> int _tmain( int argc, _TCHAR * argv[] ) { int ch; char buffer[ 1 ]; HANDLE file; COMMTIMEOUTS timeouts; DWORD read, written; DCB port; HANDLE keyboard = GetStdHandle( STD_INPUT_HANDLE ); HANDLE screen = GetStdHandle( STD_OUTPUT_HANDLE ); DWORD mode; LPCWSTR port_name = L"\\\\.\\COM5"; char init[] = ""; if( argc > 2 ) swprintf_s(( wchar_t * ) & port_name, 128, L"\\\\.\\COM%c", argv[ 1 ][ 0 ] ); file = CreateFile( port_name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); memset( & port, 0, sizeof( port ) ); port.DCBlength = sizeof( port ); timeouts.ReadIntervalTimeout = 1; timeouts.ReadTotalTimeoutMultiplier = 1; timeouts.ReadTotalTimeoutConstant = 1; timeouts.WriteTotalTimeoutMultiplier = 1; timeouts.WriteTotalTimeoutConstant = 1; mode &= ~ENABLE_PROCESSED_INPUT; Sleep( 200 ); do { ReadFile( file, buffer, sizeof( buffer ), & read, NULL ); if( read ) WriteFile( screen, buffer, read, & written, NULL ); if( _kbhit() ) { ch = _getch(); WriteFile( file, & ch, 1, & written, NULL ); } } while( ch != 127 ); CloseHandle( keyboard ); CloseHandle( file ); return 0; } |
|
DejaVu |
» 2015-07-25 11:13:36 WriteFile( screen, buffer, read, & written, NULL );
Zmień uchwyt screen na inny, z którego będziesz potrafił czytać dane strumieniowo. |
|
« 1 » 2 |