Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

odbiór danych z rs 232

Ostatnio zmodyfikowano 2015-07-26 18:12
Autor Wiadomość
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ć?
P-135141
pekfos
» 2015-07-24 15:50:48
To zła dokumentacja, jeśli chcesz to zrealizować w C++.
P-135142
lukisp2
Temat założony przez niniejszego użytkownika
» 2015-07-24 15:58:51
Ok, a gdzie znaleźć prawidłową dokumentacje?
P-135143
pekfos
» 2015-07-24 16:17:42
Frazy, które należy wpisać w wyszukiwarkę google:
Przykładowo https://msdn.microsoft.com​/en-us/library/ff802693.aspx
P-135146
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ąć?
P-135148
pekfos
» 2015-07-24 17:06:30
Od podstaw, potem dokumentacji.
P-135149
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ń.
C/C++
#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[] = ""; // e.g., "ATZ" to completely reset a modem.
    if( argc > 2 )
         swprintf_s(( wchar_t * ) & port_name, 128, L"\\\\.\\COM%c", argv[ 1 ][ 0 ] );
    // open the comm port.
    file = CreateFile( port_name,
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL );
    // get the current DCB, and adjust a few bits to our liking.
    memset( & port, 0, sizeof( port ) );
    port.DCBlength = sizeof( port );
    // set short timeouts on the comm port.
    timeouts.ReadIntervalTimeout = 1;
    timeouts.ReadTotalTimeoutMultiplier = 1;
    timeouts.ReadTotalTimeoutConstant = 1;
    timeouts.WriteTotalTimeoutMultiplier = 1;
    timeouts.WriteTotalTimeoutConstant = 1;
    // set keyboard to raw reading.
    mode &= ~ENABLE_PROCESSED_INPUT;
    Sleep( 200 );
    do {
        // check for data on port and display it on screen.
        ReadFile( file, buffer, sizeof( buffer ), & read, NULL );
        if( read )
             WriteFile( screen, buffer, read, & written, NULL );
        // check for keypress, and write any out the port.
        if( _kbhit() ) {
            ch = _getch();
            WriteFile( file, & ch, 1, & written, NULL );
        }
        // until user hits ctrl-backspace.
    } while( ch != 127 );
    // close up and go home.
    CloseHandle( keyboard );
    CloseHandle( file );
    return 0;
}
P-135169
DejaVu
» 2015-07-25 11:13:36
C/C++
WriteFile( screen, buffer, read, & written, NULL );
Zmień uchwyt screen na inny, z którego będziesz potrafił czytać dane strumieniowo.
P-135192
« 1 » 2
  Strona 1 z 2 Następna strona