PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control / ATMega32 - Visual Basic als Terminal verwenden



Mario G.
11.11.2009, 13:47
Hallo an alle!

Ich bin ganz neu hier im Forum bzw. auch auf dem Gebiet RN-Contol, deshalb habe ich auch gleich eine Frage:

Noch kurz zum Projekt:
Servos und Motoren sollen mit VB über RS232 (bis zu 100m Kabellänge) angesteuert werden und Sensordaten abgerufen werden.

Bisheriger Erfolg:
Ich habe ein Bascom Beispielprg. etwas geändert um Servos mit eingehenden Signalen an er RS232 Schnittstelle zu steuern; ein kleines Steuerpult mit VB programmiert; Steuerung funktioniert wunderbar.

Nun zu meiner Frage:
Wenn ich mit RN-control einen "print" Befehl (Beispiel:abc) ausgebe, und mit VB abfrage erhalte ich jedoch nur
Zahlen! - Mit dem Terminaleditor von Bascom funktioniert es allerdings!
Hat jemand eine Lösung bzw kann man VB als Terminal verwenden?

Mfg Mario

Jaecko
11.11.2009, 14:41
Moin moin.

Wenn du Print "abc" schreibst, welche Zahlen genau kommen dann an?
Ich würde da jetzt z.B. 97 98 99 oder 61 62 63 erwarten.

Zum Ansteuern von Servos hab ich auch schon mal was in VB geschrieben; ich geh mit den Daten aber nicht auf nen ATMega sondern auf ein Pololu-Servoboard. Die Ansteuerung erfolgt aber hier auch relativ einfach über ein 3-Byte-Kommando (0xFF, Servonummer, Position).
http://cihome.kilu.de/bilder/software/servocontrol_main.jpg

holzi
11.11.2009, 15:28
Moin moin,
Du musst im VisualBasic Deine Empfangsvariable in den Chr-Befehl einbetten.
Beispiel:
Text1 = Text1 + Chr(Empfangszeichen)
Wobei das Text1 Dein Ausgabefenster ist.

Peter

michl78
11.11.2009, 16:21
100 m Kabel? Habe so etwas mit 15 Meter in Erinnerung...

Jaecko
11.11.2009, 17:22
Je nach Baudrate. Bei 9600 wären noch gute 150m drin.
Bei 1200 sogar > 1km.

Mario G.
12.11.2009, 06:58
So, danke für die schnellen Antworten!

Hier ein Auszug von VB:


Option Explicit
Option Base 1

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Declare Function OPENCOM Lib "Port" (ByVal a$) As Integer
Declare Sub CLOSECOM Lib "Port" ()
Declare Sub SENDBYTE Lib "Port" (ByVal b%)
Declare Function READBYTE Lib "Port" () As Integer
Declare Sub DTR Lib "Port" (ByVal b%)
Declare Sub RTS Lib "Port" (ByVal b%)
Declare Sub TXD Lib "Port" (ByVal b%)
Declare Function CTS Lib "Port" () As Integer
Declare Function DSR Lib "Port" () As Integer
Declare Function RI Lib "Port" () As Integer
Declare Function DCD Lib "Port" () As Integer
Declare Sub DELAY Lib "Port" (ByVal b%)
Declare Sub TIMEINIT Lib "Port" ()
Declare Sub TIMEINITUS Lib "Port" ()
Declare Function TIMEREAD Lib "Port" () As Long
Declare Function TIMEREADUS Lib "Port" () As Long
Declare Sub DELAYUS Lib "Port" (ByVal l As Long)
Declare Sub REALTIME Lib "Port" (ByVal i As Boolean)

Jaecko: Bei print "0" erhalte ich Zahlen wie: 4,83,35,82 usw usw..

Michl78: Bei Baud 4800 sollte eine Leitungslänge von 300 Metern mit einem Standardkabel möglich sein, ich bin sicherheitshalber auf 1200 runter um eventuelle Störungen zu vermeiden.

holzi: Wie oben ersichtlich, lese ich das Byte am Port aus, wie komme ich dann auf das ursprünglich gesendete Zeichen?


Mfg

Mario G.
12.11.2009, 08:35
Hab da etwas interessantes auf http://home.wtal.de/Mischka/VB/COM/ gefunden!

Werds am Abend mal ausprobieren!

oberallgeier
12.11.2009, 13:25
... etwas interessantes ... gefunden! ... mal ausprobieren!Kennst Du das Terminal von Br@y? In diesem Link, (http://www.smileymicros.com/) rechts, ganz unten unter Download? Läuft bei mir als Standard. Und auch oberhalb von COM4 *ggg*.

Edit (17:35): Ich habe jetzt in meinem Bestand auch einen Bildschirmdump des Terminals gefunden (nur Teilausschnitt, darunter kommt die Sende-Oberfläche):

................http://oberallgeier.ob.funpic.de/testlauf-10feb08-2350.jpg