PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String über rs232 schicken



ceekay
20.02.2006, 18:50
Hallo,

und zwar hab ich vor einen Datenstring über die serielle Schnittstelle an meinen AVR zu schicken. Das ganze soll in c++ programmiert werden. Als Compiler habe ich Visual C++. Leider bringt mir die Hilfe nicht viel. Soweit ich weiß gibt es da fertige Funktionen die man nutzen kann. Ich weiß nicht welche Header Dateien ich einbinden muss, wie ich die Serielle konfiguriere oder Daten schicke b.z.w empfange.

Oder geht sowas mit Borland einfacher?

Es wäre schön wenn jemand einen Beispielcode, mit einigen Erklärungen hätte.
Oder wo ich mich darüber infomieren kann.

NumberFive
20.02.2006, 21:07
https://www.roboternetz.de/phpBB2/viewtopic.php?t=16297

hier mit lesen bald kommt der Source dann kannst du gucken oder einfach mit machen

ruediw
20.02.2006, 22:24
Wenn Du mit dem C-Builder von Borland arbeiten willst, dann gibt es
fertige Komponenten dafür.

NumberFive
21.02.2006, 06:04
@ruediw ich nehme an du meinst die VCL oder ?

@ceekay welche version hast du eigenlich ?
wie Tief willst du einsteigen ? oder reicht es dir das da einfach daten fliessen ?
wenn es dir reicht das daten fliegen ist eine Fertige dll oder so ein VCL projekt sicher wessendlich einfacher. Kommt darauf an was du genau machen willst.

Ich gehöre halt zu den leuten die verstehen wollen was abgeht.

Gruß

ruediw
21.02.2006, 12:02
@ruediw ich nehme an du meinst die VCL oder ?

@ceekay welche version hast du eigenlich ?
wie Tief willst du einsteigen ? oder reicht es dir das da einfach daten fliessen ?
wenn es dir reicht das daten fliegen ist eine Fertige dll oder so ein VCL projekt sicher wessendlich einfacher. Kommt darauf an was du genau machen willst.

Ich gehöre halt zu den leuten die verstehen wollen was abgeht.

Gruß

@NumberFive:
Ja, ich meine die VCL. Bin immer dafür fertig getestete Komponenten zu nehmen, wenn möglich.
Bim auch so, möchte ein möglichst präzise Angabe wo das Problem liegt,
Compiler, Betriebssystem, Hardware, Programmierkentnisse etc.

Bin eben etwas von den Borland Newgruops geprägt ...

ceekay
21.02.2006, 12:04
@ruediw: falls es damit einfacher geht, kann ich auch auf den c Builder umsteigen. Welche wo findet man denn die fertigen Komponenten

@NumberFive:
Es kommt mir erstmal drauf an das ich die Daten schicken kann. Genauergesagt will ich Ascii Werte aus einer Textdatei auslesen und nach und nach an den µC schicken. Dieser soll dann auch bestätigen ob die Checksumme passt u.s.w.
Wenn das senden erst einmal funktioniert, dann kann ich mich auch genauer damit auseinandersetzen.

hl_angel
21.02.2006, 12:29
Altes Thema, gleiche Antwort:
Mal das Projekt anschauen and die benötigten Klassen selber einbinden..
Wie man sie verwendet, sollte aus der Mini-App sichbar sein

ceekay
21.02.2006, 16:17
Wie man sie verwendet, sollte aus der Mini-App sichbar sein

nein leider nicht. das ist für einen Anfänger sehr unübersichtlich. Ich habe zwar Grundkenntnisse in C aber hab noch keine Praxis mit Klassen und Objekten. Könntest du mal ein Beipiel posten in dem der String "test" über die serielle rausgeschickt wird?
das wäre sehr hilfreich.

hl_angel
21.02.2006, 16:29
ok, hier vielleicht die einfacheren klassen, kannst einfach ein byte senden bzw empfangen
beispiel von mir ist das mainprogramm rs232.cpp, wo ich ein byte sende und auf eins warte (mit 56 kbaud: CBR_57600).. das ganze ist eine konsolenanwendung, daher auch kein "windowskram" der nur verwirrt..

C++ lernen kann ich dir leider nicht abnehmen.. aber das hier sollte eher verständlich sein ;-), auch wenn man von windows wenig ahnung hat...

gruss und erfolg
hl_angel

ceekay
21.02.2006, 16:35
Leider ist die zip file Passwortgeschütz....

NumberFive
22.02.2006, 06:42
@ceekay

wenn du den Thread (mein link) durch gelesen hättest wärst du deinem problem ein ganzes stück näher da gibt es ein lib für bascom und eine exe
für windows die daten austauschen. Damit währe dein problem wohl gelöst.

Aber vielleicht programmiert dir dein problem ja auch ein anderer ich mach es nicht mehr habe das hier schon zu oft gemacht.

Gruß

ceekay
22.02.2006, 06:58
@Numberfive:
Es soll mir keiner mein Problem programmieren. Es ist nur für einen Anfänger nicht einfach sich durch komplexere Programme durchzuarbeiten und das herauszuziehen was man wirklich benötig.

In deinem Thread hatte ich nur ein VB Programm für die serielle Schnittstelle gefunden. Und eine fertige exe bringt mich auch nicht weiter. Und ich hatte ja geschrieben dass ich C lerne, also brauch ich auch keine Bascom Libary.
@hl_angel:
Wäre es möglich wenn du das ganze nochmal ohne Passwort hochlädst?

hl_angel
22.02.2006, 10:37
ich idiot.... zippe standardmäßig mit passwort, um dinge über meine email-virencheck-firewall zu bekommen... sorry.. also hier nochmals ohne

gruss
hl_angel

hl_angel
22.02.2006, 10:39
oha, konstruktive selbstkritik nicht zulässig, sondern zensiert?
wäre "1D10T" gewesen ;-)

ceekay
22.02.2006, 10:43
ah vielen Dank. Denn werd ich mir das mal reinziehen und schaun ob ich damit klar komme. Ich hab grad die Readme.txt gelesen und mich würde mal interessieren wie man sowas mit dem Assistenten in Visual C++ erzeugen kann?

hl_angel
22.02.2006, 10:52
Im assistenten "Win32 Konsolenanwendung" auswählen und "MFC unterstützt" im nächsten schritt auswählen

NumberFive
22.02.2006, 12:43
@hl_angel

hast du damit die Com schon mal ausgelesen ?

@ceekay
http://www.oldformation.at/electronic/download/down.htm

hl_angel
22.02.2006, 12:56
@hl_angel

hast du damit die Com schon mal ausgelesen ?


klaro, klappt bei mir... gerade eben verifiziert

NumberFive
22.02.2006, 14:25
Ich meine nur wegen dem warten beim lesen wenn da nix kommt hängt das programm oder nicht.

hl_angel
22.02.2006, 15:29
Ich meine nur wegen dem warten beim lesen wenn da nix kommt hängt das programm oder nicht.


Sicher, ist auch Absicht... hab das mit nem uC getestet, der ein ACK liefert....

Wer sich mal den Code anschaut sollte erkennen, dass man die timeouts setzen kann...

z.B: port.SetCommunicationTimeouts(1,0,1,0,1000);
und die sache blockiert nicht so lange....für genaue Beschreibung der Parameter bitte auf MSN nach "SetCommTimeouts" schauen

gruss
hl_angel

NumberFive
22.02.2006, 21:15
Ich mache es lieber event gesteuert das gefällt mir besser und die wahrscheilichkeit das ich ei zeichen verliere ist nicht ganz so groß.

Gruß

hl_angel
23.02.2006, 00:29
ich verwend die routine in einem thread.. daher kein performanceverlust... thread wird ja durch das event "neues byte da" aktiviert :-)

NumberFive
23.02.2006, 06:25
genau das habe ich gemeint ich mach nur mit overlapped structuren damit ich das sauber asyncron verwenden kann. Schreiben in ein thread lesen in ein andern und mit WaitComevent auf daten warten.

Also hat deine Software auch nicht mehr also viel mit der Klasse zu tun.

Über das Thema MFC kann man jetzt sicher noch streiten aber soll jeder mach wie er will. Ich mag sie nicht.

Gruß

hl_angel
23.02.2006, 09:20
Über MFC lässt sich streiten, ich bin auch kein Freund von jenen...
Die Klassen sind sehr an meine Anforderungen angepasst, das warten auf die serielle ist auch ohne! overlapped structures kein Polling, sondern geschiet asynchron (habe ich ausgemessen, beim Warten wird der Thread gestoppt, das COM "file" wird komplett von Windows gehandelt). Da ich nicht Event-, sondern Zeitgesteuert sende/empfange
(der uC sendet alle 10 ms daten) kann ich das per Windows auch gut schedulen (und ich muss ja nicht jedes Byte abholen, Windows verwendet einen internen Buffer (damit mein ich nicht die 16554 FIFO) zum zwischenspeichern).

Liebe Grüße
hl_angel

NumberFive
23.02.2006, 16:21
es gibt viele wege nach rom aber fest zu halten bleibt ohne Thread geht es nicht gescheit.

Frage mich nur gerade wie du den Thread so sauber ab baust.

Gruß

ceekay
24.02.2006, 06:08
Vielen Dank erstmal für die Hilfestellung. Die Routinen konnte ich gut nachvollziehen. Wenn es bei der praktischen Umsetzung später Probleme gibt meld ich mich.