RS232 Windows XP öffnen
-
Hallo Gemeinde,
Ich habe mir einen NV10 NoteAcceptor (Banknotenprüfer) gekauft, dieser wird an die Serielle Schnittstelle angeschlossen (RS232). Die eigentliche Kommunikation läuft via ccTalk. Der NoteAcceptor ist frei programmierbar...
So um das ganze in Betrieb zu nehmen, muss ich ja als erstes den ComPort öffnen, was bei mit Port 4 wäre. Jedoch scheitere ich da schon, da sich der Port nicht öffnen lässt. Ich habe in der MSDN nach gelesen, wie es funktionieren sollte: http://msdn2.microsoft.com/en-us/library/ms810467.aspx#serial_topic3
Mein Quellcode:
#include <windows.h> #include <iostream> int main (void) { HANDLE hComm; hComm = CreateFile ("COM4", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); if (hComm == INVALID_HANDLE_VALUE) { std::cout << "Port geschlossen!\n"; } else { std::cout << "Port offen!\n"; } return 0; }Ich habe viele Beispiele ausprobiert die ich bei google gefunden habe, jedoch ohne Erfolg.
Kann mir jemand sagen warum sich der Port nicht öffnen lässt? Ich habe es OverLapped und nicht OverLapped versucht. Ich kann somit auch mit auch nicht mit dem NoteAcceptor nicht kommunizieren.
So long
JD
-
Ich kenne das zwar nur von höheren Port-Nummern, aber hast Du schon mal
hComm = CreateFile ("\\\\.\\COM4", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);probiert?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Du verwendest main() und nicht WinMain()!
main() -> Konsolenprogramm
WinMain() -> Windows-GUI-Applikation
Somit gehört Deine Post eigentlich in das Forum "DOS und Win32-Konsole".
Aber: Dein eigentliches Problem mit dem Öffnen des Ports hat nichts damit zu tun.Nun zu der Sache:
Von der Verwendung CreateFile() her kann ich keinen Fehler feststellen.Welchen Wert liefert GetLastError()?
Allem Anschein nach siehts so aus, daß der Port schon von einem anderen Programm belegt wurde oder schlicht und einfach gar nicht exisitiert...Verwendest Du eine ganz normale COM-Port Schnittstelle oder wurde ein ganz spezieller Treiber für die serielle Schnittstelle installiert?
Martin
-
Also das ganze funktioniert jetzt. Fehler war, das der Herstelle mir ein Defektes Kabel geschickt hat :(. Da kann ich mir natürlich ein "Wolf" suchen.
Nein das ist kein direkter Comport, das ist eine UART Brücke (USB->Seriel), ist quasi ein emulierter Comport. Der Zugriff erfolgt aber über RS232.
Wenn der Port offen ist, was muss ich als nächstes machen? Das was in der MSDN steht, damit komme ich bis auf die öffnung der Ports nicht klar. Lesen oder Schreiben? Ich würde gerne wissen ob er ein Gerät gefunden hat oder nicht, oder das dass gerät mir was erzählt wäre auch toll. Oder muss ich erst was an den ComPort senden bevor ich was empfangen kann? Hat jemand eventuell ein funktionierendes HowTo? Alle die ich bis jetzt getestet habe, funktionieren nicht, oder machen gleich einen Aufstand, es sei Hexerei... da der zugriff auf Hardware im direkten weg verboten ist oder sowas. Ich meine das wird doch keine Hexerei sein oder liege ich da falsch? Habe sowas selber noch nie gemacht. Bloß die Programme kosten schweine Geld zum Testen der NoteAcceptoren und das Kommunikationsprotokoll(ccTalk) ist free, somit kann man das selber bauen...
so long
-
Warum nutzt Du nicht die mächtigen Suchfunktionen hier und beim Google?
Z.B. hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-144417-and-highlight-is-rs232.htmljd schrieb:
Also das ganze funktioniert jetzt. Fehler war, das der Herstelle mir ein Defektes Kabel geschickt hat
Ich kombiniere: Das defekte Kabel war auf der USB-Seite defekt. Was wohl dazu geführt haben müßte daß der virtuelle COM-Port Treibe nicht gestartet wurde -> CreateFile() schlägt natürlich fehl!
Wenn das defekte Kabel aber auf der Seite von RS232 (also hinter dem USB-RS232 Konverter-IC) defekt war, dann hast Du ein anderes verstecktes Problem! Ich meine, wenn dies so ist, dann beseitige am besten jetzt die wahre Ursache, ansonsten beißt Du Dir später Deine Zähne bei der Fehlersuche aus (wenn Dein Projekt schon größer geworden ist).
Martin
-
Ja, das USB-Kabel war defekt.
Danke für den Link, ich werde mir das gleich mal anschauen und durcharbeiten. Wenn ich das hinbekomme und alles klappt wie ich mir das vorstelle, dann habe ich eine schicke komplette Test-Station für NoteAcceptoren, CoinAcceptoren und Hopper. Das wäre einfach toll, weil man angeblich für jeden Hersteller ein anderes Programm kaufen muss, was aber nicht der Fall ist, da alles via ccTalk läuft und das ist ein fester Standard. Müsste dann quasi nur die anderen Sachen Unterstützen... Ich habe viel im Internet gelesen, und viele sagen das der zugriff auf RS232 mit c++ irrsinn sei und empfehlen VBA. Aber ich denke mal mit C++ fahre ich gut und bin flexibler...