Steuern der RS232 Pins mit C



  • Ich sag dir mal wie ich das mache mit der Kommunikation mit der Außenwelt. Ich hab mir einfach einen Arduino Uno ( http://arduino.cc/en/Main/ArduinoBoardUno ) gekauft. Der hat eine USB schnittstelle mit der du jederzeit mit dem PC kommunizieren kannst, und zwar kannst du da richtig informationen als string senden nicht einfach nur einen pin ein oder ausschalten. Er kann auch berechnungen lokal durchführen was für größeres ziemlich praktisch ist. Beispielsweise kannst du einfach noch nen knopf oder sonst irgentwas für deine Nebelmaschine anbringen. Zum Beispiel könntest du die Nebeldichte messen und dir auf deinem PC anzeigen lassen. Zusätzlich hast du genügend ports, die du durch shift register eigentlich beliebig erweitern kannst falls sie dir nicht reichen sollten.

    So ein Teil kostet in diversen online shops 20€ und kann alles was du brauchst und noch viel mehr. Macht spaß damit rumzuspielen und du kannst so ziemlich alles automatisieren bzw. vom PC aus steuerbar machen. Der serielle Port ist für serielle Datenübertragung ausgelegt, einen Pin an oder aus zu schalten geht da doch eher zu paralleler Datenübertragung.

    Ich würde wenn ich du wär so en Teil kaufen.

    gruß



  • Ich habe hier das MExS@Home-Board der FH-Hannover mit nem 8051-Prozessor liegen. Das könnte ich natürlich auch dafür verwenden, aber ich wollte halt gerne selber etwas einfach basteln. Aber wie gesagt, wahrscheinlich scheitert es an meinen Programmierkenntnissen. Java würde ich übrigends auch noch beherrschen, falls das einfacher ist.



  • Mister232 schrieb:

    Ich habe hier das MExS@Home-Board der FH-Hannover mit nem 8051-Prozessor liegen. Das könnte ich natürlich auch dafür verwenden, aber ich wollte halt gerne selber etwas einfach basteln. Aber wie gesagt, wahrscheinlich scheitert es an meinen Programmierkenntnissen. Java würde ich übrigends auch noch beherrschen, falls das einfacher ist.

    Kannst du doch. Den PC teil schreibst in C und den Teil auf dem arduino kannst auch in C schreiben.

    Das wirst du sogar alles selber machen müssen das gibts nich fertig, nur die hardware.



  • Hätte jetzt mal eine andere Frage, ich habe mich dazu umentschieden nun doch den Parallelport zu nutzen und zwar mit Visual Basic. Da braucht man aber eine Datei Namens inout32.dll, damit wie oben bereits jemand erwähnte Windows auf die Ausgänge zugreifen kann. Nun brauche ich diese Datei aber für 64Bit, kann mir da jemand einen Link geben?



  • Aber Hallo Ihr Schreiber,
    natürlich geht das ganz einfach mit der Win32 API 👍
    Die Funktion heißt EscapeCommFunction() http://msdn.microsoft.com/en-us/library/windows/desktop/aa363254(v=vs.85).aspx

    Siehe auch meine Posts in diesem Forum, z.B.:
    "mit C port ansteuern" http://www.c-plusplus.net/forum/241523

    "Seriellen Port testen" http://www.c-plusplus.net/forum/186403

    "com-port: permanente spannung auf TxD-pin?" http://www.c-plusplus.net/forum/204145

    HTH,
    Martin



  • Cool danke, ich wollte wie gesagt shon aufgeben, nun habe ich wieder Hoffnung. Was muss ich den am Anfang des Programmes alles importieren, um den COM benutzen zu können? Bis jetzt hatte ich da immer nur <stdio.h> stehen



  • IOports schrieb:

    Swordfish schrieb:

    @IOports: Kennst du mein Lieblingszitat vom Nuhr?

    ich kann leider nicht deine Gedanken lesen [...]

    Ok, dann verrat ich's Dir: "Wenn man keine Ahnung hat: Einfach mal Fresse halten"

    IOports schrieb:

    [...] dafür kann ich aber voraussagen, das man mit der von dir verlinkten API nicht das machen kann, was der OP machen möchte.

    Siehe Zitat oben.

    Mister232 schrieb:

    Was muss ich den am Anfang des Programmes alles importieren [...]

    windows.h / kernel32.lib



  • Okay danke. Ich setz mich heute Abend mal ran 🙂



  • Habe jetzt mal ein wenig ausprobiert und mich durch die Posts von Mmacher gearbeitet. Hätte dann nochmal eine Frage, wie öffnet und initialsiert man den den COM-Port?

    Habe bis jetzt folgenden Quellcode:

    #iclude <stdio.h>
    #include <windows.h>
    
    int main(void){
    
      handle_comport = CreateFile(?);
      SetCommState(?);
      EscapeCommFunction(handle_comport, SETRTS);
    
      fflush(stdin);
      getchar();
    
      return 0;
    
    }
    

    Soryy wenn ich nerve, würde das aber einfach gerne verstehen 🙂



  • Das steht in meinem ersten Link zum Thema ...



  • Jetzt funktioniert es. Ich danke allen die mir geholfen haben. 👍

    Gruß

    Mister232



  • IOports schrieb:

    [...] dafür kann ich aber voraussagen, das man mit der von dir [Anm.: Swordfish] verlinkten API nicht das machen kann, was der OP machen möchte.

    Mister232 schrieb:

    [...]

    Swordfish schrieb:

    Das steht in meinem ersten Link zum Thema ...

    Mister232 schrieb:

    Jetzt funktioniert es. [...]

    q.e.d.


Anmelden zum Antworten