Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

1

18.03.2011, 19:25

Serielle Schnittstelle C++

Hallo!

Seit langem mal wieder meld ich mich hier im Forum. ;)

Hab jetzt schon eine sehr lange Zeit nicht mehr programmiert und beschäftige mich auch momentan nicht mehr mit der Spieleprogrammierung.
Diesmal gehts nämlich um, wie der Titel schon sagt, eine serielle Schnittstelle. Und zwar möchte ich die Daten, die ein programmierbarer Chip (PICAXE) versendet, am PC speichern. Dazu muss ich irgendwie die serielle Schnittstelle ansteuern, was ich gerne über C++ machen würde (wenns auch anders geht - ich bin für Tipps offen).
Es ist nur so, dass das ganze noch über einen USB-Seriell Adapter läuft. Weiß also nicht, wie das dann für den PC ist, ob der das genauso behandelt, wie eine "normale" serielle Schnittstelle. Falls das nicht möglich ist, hab ich immer noch die Möglichkeit, die Daten mit meinem alten Laptop mit serieller Schnittstelle auszulesen.
Ich hoff, man kann mir bei diesem Thema irgendwie behilflich sein, mir irgendwelche Bibliotheken oder Tutorials nennen.

Herzlichen Dank. :)

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

2

18.03.2011, 20:18

Das geht mit C++ sehr gut. Ich habe selbst mal ein kleines USART Terminalprogramm geschrieben (mit Quelltext auf meiner Homepage zu finden). Im Internet gibt es viele Informationen zum Ansteuern der seriellen Schnittstelle:
http://www.daniweb.com/software-development/cpp/threads/8020

Es gibt viele Möglichkeiten zur Ansteuerung, ich habe mich für die Variante mit CreateFile() entschieden. Ansonsten mal nach "Serial port +c++" googlen.

rnlf

Frischling

Beiträge: 85

Beruf: Softwareingenieur Raumfahrt

  • Private Nachricht senden

3

19.03.2011, 22:01

Du solltest mal sagen, welches Betriebssystem du überhaupt benutzt...

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

4

20.03.2011, 11:40

Du solltest mal sagen, welches Betriebssystem du überhaupt benutzt...

Sorry, hab Windows 7. Kann das ganze aber wie gesagt auch über meinen alten Lappi mit Windows XP machen, wenn das einfacher ist.

Übrigens, danke für die Links.

5

22.03.2011, 23:23

/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »E333« (02.09.2021, 04:09)


BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

23.03.2011, 12:12

Hab ich auch vor, mit nem FTDI IC dürfte das gehen.

7

23.03.2011, 20:28

/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »E333« (02.09.2021, 04:09)


Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

8

23.03.2011, 22:57

Hey,

ich machs aktuell einfach so^^:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DCB dcb;
    DWORD byteswritten;
    HANDLE hPort = CreateFileW(L"COM3", // an Com3
                            GENERIC_WRITE,
                            0,
                            NULL,
                            OPEN_EXISTING,
                            0,
                            NULL);
if (!GetCommState(hPort,&dcb))
        return 1;

    dcb.BaudRate = CBR_9600; //9600 Baudrate
    dcb.ByteSize = 8; //8 data bits
    dcb.Parity = NOPARITY; //no parity
    dcb.StopBits = ONESTOPBIT; //1 stop

    if (!SetCommState(hPort,&dcb))
        return 1;
char serialBytes[3]; //char Array mit den Bytes die gesendet werden sollen
        serialBytes[0] = 0x84; // erstes über Com gesendetes Byte
serialBytes[1] = 0x01; // zweites Byte
        serialBytes[2] = iYPos & 0x7F; // drittes Byte
        serialBytes[3] = (iYPos >> 7) & 0x7F; // viertes Byte
        WriteFile(hPort,serialBytes,4,&byteswritten,NULL); //senden...

sehr trivial und easy^^ die Bytes selber die ich da schicke haben was mit meinem Projekt zu tuen, da kannste alles beliebige schicken...

ach CloseHandle(hPort); nicht vergessen!
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Werbeanzeige

Ähnliche Themen