Wir haben unser Kommunikationsprogramm mit VB 6.0 über die RS 232 Schnittstelle schon geschrieben, so daß wir mit zwei Rechnern untereinander kommunizieren können, und die jeweiligen gesendeten Texte, wieder in einem Textfeld auf dem andren rechner ausgegeben werden. Unsere Frage wäre nun, wie wir über einen Command Button auf dem einen Rechner, ein Shapefeld auf den anderen Rechner farblich anzeigen können.(z.b bei CMD_Click soll der Shape als Grafik am Besten in grün,im Hexcode arbeiten/senden) Wir würden uns über eine Rückantwort sehr freuen!!
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Die Gua'old sind mitten unter uns!
Warum benutzt Du "wir" und "uns"? Gespaltene Persönlichkeit? Schizophrenie?
Zu Deiner Frage:
Wie kann ich zur Laufzeit Controls erstellen?
Du mußt Dir nur noch einen Befehl ausdenken, der der empfangenden Anwendung signalisiert, daß es ein Shape anlegen und grün einfärben soll. Bei der Wahl bist Du völlig frei.
Ich benutze wir und uns, weil wir zu zweit an einem Projekt arbeiten. Dies ist einfach nur der Grund dafür, warum ich in der Mehrzahl schreibe.
O.k. Danke schön. Mal sehen, ob es gelingen wird.
Hallo @Daniel!
Du kannst einen eigenen ASCII-Commandsatz für Deine SW kreieren und wie REX schreibt, diese zum "triggern" bestimmter Routinen Deiner Software auf dem anderen Rechner nutzen. Zum Absetzen dieser Commands von z.B. Texten oder anderen Inhalten, benutze spezifische ASCII-Sequenzen als Anfangs- und Endzeiger der "Befehlsstrings". Die einzelnen Befehlsstrings kannst Du wiederum mit einem bestimmten Zeichen voneinander absetzen, die Du wieder selber als "Zeiger" nutzen kannst, um sie einzeln zu isolieren und bewerten.
Durch Abfragen dieses "Befehlsteiles" an Anfang oder Ende der übermittelten Daten hast Du so alle Möglichkeiten einer bidirektionalen Kommunikation der beiden Rechner.
Hallo Pumbo!
Gibt es vielleicht irgendwo im WWW ein Beispiel dafür, oder kannst du mir ein Beispiel schicken? Das wäre echt klasse, weil ich auf diesem Gebiet mit VB noch nie gearbeitet habe.
Vielleicht kannst Du mir auch noch bei einem anderem Problem helfen.
Ich möchte in einem Formular über Datei öffen, eine TXTDatei öffnen und diese in einem Textfeld ausgeben. Ich habe aber mehrere verschiedene Textfelder angelegt.
Bis jetzt wird der Pfad und der Name der TXTDatei oben links auf dem Formular angezeigt.
Hallo @Daniel!
Solche Beispiele gibt es im Rahmen der seriellen Kommunikation mit Messgeräten bzw. seriell arbeitenden Feldbussystemen massenweise. Schau mal nach Beispielen z.B. bei CONRAD. Gerne kannst du Quelcode von mir haben (siehe das kleine VB-Script aus einem EXCEL-Arbeitsblatt unten, das zur Messadtenerfassung mit einem seriell kommunizierenden ADC dient. Ist zwar nicht unbedingt superelegant, funzt aber) Es wird Dir aber wenig helfen fürchte ich.
Achte mal auf die Zeilen mit "SENDSTRING" und "STRREAD". Ersterer Befehl schickt Befehlsdatensätze an das Messgerät. Die versch., großgeschrieben Buchstaben in Anführungszeichen haben für das Gerät eine besondere, definierte Bedeutung und initiieren in dessen BIOS definierte Befehlsabläufe. CHR13 ist dabei das Zeichen für "Ende der Befehlskette". Wenn das Gerät das empfängt arbeitet es die erhaltenen Befehle ab und sendet dann wiederum Daten an den Rechner. Dies liest man z.B. als String mit STRREAD aus. Das Ende markiert hier in diesem Fall das Zeichen für EOF. Den nun so erhaltenen Signalstring kann ich dann mit den befehlen LEFT, RIGHT usw. so zerpflücken, wie ich will und sogar z.B. mit STRG resp. VAL deren Qualität noch ändern. Also recht triviale Angelegenheit das ganze, wenn man's mal kapiert hat. Zum Üben kannst Du ja mal versuchen, betimmte Worte oder Buchstabenfolgen aus einem beleibigen Satz zu isolieren. Was anderes kommt im Grunde auch nicht über die RS232. Hinsichtlich der hardwareseitig erforderlichen Einstellungen bei OPENCOM ist hoffentlich alles klar, oder?
Eine Einführung dazu gibt es z.B. in Büchern von HORST KAINKA, der befaßt sich seit bestimmt schon 2 Jahrzehnten mit Meßdatenrefassung über serielle Schnittsellen, so auch die RS 232.
Mit Deiner Formularproblematik kann ich Dir leider nicht helfen, da ich nicht mit VB6 arbeite, könnte mir aber vorstellen, dass Du dies, wenn ich richtig verstehe, über die EiGENSCHAFTEN des Objektmodules wegbekommen können solltes.
Gruß
Pumbo
Quelltext-Anhang:
Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal A$)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
Declare Sub STRREAD Lib "RSAPI.DLL" (ByVal A$)
Declare Sub STRLENGTH Lib "RSAPI.DLL" (ByVal L%)
Declare Sub TIMEINIT Lib "RSAPI.DLL" ()
Declare Function TIMEREAD Lib "RSAPI.DLL" () As Long
Declare Sub SENDBYTE Lib "RSAPI.DLL" (ByVal B%)
Declare Function SENDSTRING Lib "RSAPI.DLL" (ByVal S As String) As Integer
Declare Function READBYTE Lib "RSAPI.DLL" () As Integer
Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)
Option Explicit
Dim Setup, ZDat$, M1$, M, KZ, MSRK, Kanal$, ZEILE, EOF$, MSR$, T 'Benutzte Variablen
Sub MSR55()
Sheets("MD1").Select
Columns("A:k").Select
Selection.ClearContents
Application.Calculation = xlAutomatic
TIMEOUT 10000
MSRK = 10 'Variable Messkanalanzahl MSR55
ZEILE = 2 'Variable Zeilenposition Messwerte
OPENCOM "com2,9600,N,8,2"
'MSR Setup
GoSub MSR1:
SENDSTRING "L" + Chr(13)
DELAY 4000
GoSub MSR1:
SENDSTRING "U00,00,00,00,00" + Chr(13)
GoSub MSR1:
SENDSTRING "A1," + MSRK + Chr(13) 'Aktivieren von Messkanälen
For KZ = 1 To MSRK
GoSub MSR1:
SENDSTRING "M" + KZ + ",7" + Chr(13) 'Bestimmung des Sensortypes je Messkanal
GoSub MSR1:
SENDSTRING "W" + KZ + ",2" + Chr(13) 'Bestimmung der Auflösung je Messkanal
Next KZ
TIMEINIT
s1:
Application.Calculation = xlManual
T = TIMEREAD / 1000
KZ = 1
GoSub MSR1:
'Auslesung Datum Uhrzeit
SENDSTRING "K" + Chr(13)
STRLENGTH 30
ZDat$ = "123456789012345678901234567890"
STRREAD (ZDat$)
If Left$(ZDat$, 1) "Z" Then GoTo s1:
Cells(1, 1).Value = Left$(ZDat$, 29)
Cells(ZEILE, 1).Value = T
SENDSTRING Chr(6)
S2: 'Messdatenauslesung
KZ = KZ + 1
STRLENGTH 12
M1$ = "123456789012"
STRREAD (M1$)
If ZEILE = 2 Then Cells(ZEILE - 1, KZ).Value = "Kanal " + Right$(Left$(M1$, 3), 2) 'Kanalbeschriftung
M = Val(Right$(M1$, 6))
Cells(ZEILE, KZ).Value = M 'Messdatum
SENDSTRING Chr(6)
If KZ = MSRK + 1 Then ZEILE = ZEILE + 1
If KZ
Application.Calculation = xlAutomatic
'Auslesung Signalübermittlungsende
STRLENGTH 2
EOF$ = "12"
STRREAD (EOF$)
If Left$(EOF$, 1) = "#" Then GoTo s1:
GoTo s1:
CLOSECOM
End
'MSR55 - Signalübermittlungsroutine
MSR1: SENDBYTE Asc("@")
STRLENGTH 1
MSR$ = "1"
STRREAD (MSR$)
If MSR$ "!" Then GoTo MSR1:
Return
End Sub