ganz zum Schluß möchte ich über die Windows Sprachsteuerung eine LED anschalten. Dafür gibt es die Speech-Makros und die können VB-Scripte ausführen.
Einen von drei Schritten habe ich bereits fertig:
wenn ich z.B. über Putty oder den Seriellen Monitor eine 1 schicke, dann schaltet der Arduino die LED an. Hier der Code zum Nachbauen.
/*Steuerung einer LED ueber Serielle Schnittstelle
1 schaltet LED ein, 2 schaltet sie aus
*/
int val = 0;
int ledPin = 13;
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
}
void loop() {
while (Serial.available() == 0); //auf Serial Input warten
val = Serial.read() - '0'; //Input einlesen, '0' = 48 Ascii, '1'=49
if (val == 1) {
Serial.println("Led is ON");
digitalWrite(ledPin,HIGH);
}
else if (val == 0) {
Serial.println("Led is OFF");
digitalWrite(ledPin,LOW);
}
else {
Serial.println("Invalid Enter");
}
//Serial.println(val);
}
Ich komme beim VB-Script nicht weiter. Nur zum Verständnis. Ich kann doch eine Datei *.vbs erstellen, schreibe dort das Script rein und wenn ich die Datei starte, sollte das Script doch ausgefürt werden. Richtig?
Hier ist nun mein Code. Ich kenne mich mit VB-Script nicht aus, deswegen habe ich viele verschiedene Möglichkeiten reingeschrieben.
Sub TestCOMPort
Const ForWriting = 2, TriStateFalse = 0
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("COM16:9600,N,8,1", ForWriting, False, TriStateFalse)
' Set f = fso.OpenTextFile("COM16:9600,N,8,1", 2)
' Set f = fso.OpenTextFile("COM16:9600,N,8,1", true)
' Verschiedene Moeglichkeiten ne "1" zu schicken. Kenne die Syntax nicht
f.Write Chr(49)
f.Write "1"
f.Write (1)
f.Write ("1")
f.Close
End Sub
Wenn ich nun die Datei starte, kommt zum Glück keine Fehlermeldung mehr, es kommt aber auch nix beim Arduino an. Ich habe auch andere Möglichkeiten gesehen, z.B. wurde in der 5 Zeile ein Textfile nicht geöffnet sondern erzeugt. Ich finde aber kein Tutorial wo es mal schön erklärt wird. Erkennt jmd. meinen Fehler.
Einbinden des Scripts in die Speech Macros ist dann wiederum kein Problem
woher hast Du die methode mit dem schreiben auf com mittels opentextfile? schaut ja interessant aus, aber funzt nicht. "Die Datei wurde nicht gefunden". hätte mich auch ziemlich gewundert, aber ich dachte, man lernt nie aus... und hab's probiert.
hast Du eine quelle? wollte das selbst schon länger mit vbs machen, aber immer verschoben.
ja das ist mein problem, ich suche jetzt seit ca. 12 stunden, will vbscript nicht deswegen erlernen, aber eben mal kurz nutzen.
Ist meine Annahme bezueglich Datei erstellen, reinschreiben und starten richtig?
Das Script jetzt sollte aber funktionieren, bei mir kommt kein Fehler.
Wenn ich statt Open Create nehme, dann meckert er bei mir rum: Set b = fs.CreateTextFile("COM16:9600,N,8,1",FALSE)
Ich kann dir nicht mehr sagen wo ich es gefunden habe, meine besten Ergebnisse gab es mit "vbscript send data to serial port" in google.
Und hier habe ich auch die schönsten Scripte gefunden, welche wahrscheinlich auch starten aber auf dem COM-Port nix machen. http://support.smartbear.com/viewarticle/33257/
Klicke dazu auf SHOW EXAMPLES
Gruß Vansen
PS: ich spüre ganz deutlich, ich bin kurz vor dem Ziel
ich habe im englischen forum einen sehr interessanten post gefunden (relevanz 3,5%) soviel zur empfehlung der suchfunktion
eigentlich ist das script richtig. hier noch einfacher. das soll einen comport oeffnen und dann 1 schreiben und wieder schliessen.
bei dem der mir hilft klappt es in winXP, bei mir nicht ich habe WIN7. vielleicht liegt es daran. ich bekomme aber immer eine fehlermeldung.
es waere sehr nett wenn ihr das script mal ausprobiert. bei wem klappt es bei welcher Betriebsystemkonfiguration?
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set com = fso.OpenTextFile("COM7:9600,N,8,1", ForWriting)
MsgBox("Ready to write a character to COM")
com.Write("1")
com.Close()
-> vbs datei erstellen, reinkopieren und ausfuehren. (COMport anpassen!)