Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom will nicht :-(
king-sixXx
12.05.2005, 21:42
Hi Leute!
Ich muss euch jetzt mal fragen, ich weiß nicht wo das Problem liegt:
Mein Bascom Quelltext sieht so aus:
$baud = 9600
Config Portb = Output
Dim Zeichen As Byte
Zeichen = 0
Rsabfrage:
Do
Zeichen = Inkey()
Loop Until Zeichen <> 0
If Zeichen = 70 Then Gosub Machwas
If Zeichen = 80 Then Gosub Mach
Goto Rsabfrage
Machwas:
Portb.1 = 1
Goto Rsabfrage
Mach:
Portb.1 = 0
Goto Rsabfrage
Der Mega8 wartet auf das Signal von der RS232 und soll dann je nach Wert die Subroutine aufrufen... Das Signal kommt von folgendem Proggi mit Hilfe der Port.dll:
Private Sub Command5_Click()
SENDBYTE (80)
End Sub
Private Sub Command6_Click()
SENDBYTE (70)
End Sub
Sub form_load()
i = OPENCOM("COM1,9600,N,8,1") 'Schnittstelle COM1 öffnen
If i = 0 Then
i = OPENCOM("COM2,9600,N,8,1") 'Wenn COM1 belegt COM2 öffnen
End If
If i = 0 Then MsgBox ("Schnittstelle nicht geöffnet!!")
End Sub
Leider tut sich agr nicht wenn ich das VB programm laufen lasse!
Vielen Dank im Vorraus!
Hast du keine $crystal Befehl drin ?
Ohne den werden die Baudraten nicht richtig berechnet.
Gruß
Christopher
pebisoft
12.05.2005, 22:17
brauchst du nicht im source-code eintragen. kannste auch im menue einstellen für das jeweilige programm. jedesmal wenn das programm geladen wird, wird auch die frequenz mit reingenommen.
mfg pebisoft
Alter Knacker
12.05.2005, 22:21
das sieht doch alles bloss nach pseudocode aus ?!?`
soll man sich da jetzt auskennen?
mfg knacki
pebisoft
12.05.2005, 22:33
du kannst auch die baudrate rauslassen und im menue einstellen für das jeweilige programm.
mfg pebisoft
Vielen Dank für die Antworten!
Ich hab $crystal unter options/Compiler/crystal frquency eingestellt...
@ knacki:
Das sollte schon richtiger Code sein... Sieht das so hoffnungslos aus??
king-sixXx
12.05.2005, 22:35
Das mit dem Auto-Login geht auch nicht.... :-)
pebisoft
12.05.2005, 22:36
bascom hat so seine versteckten eigenheiten, die lernt man erst im laufe der zeit kennen. bascom ist für mich wie ein klavier. ich kann jede melodie darauf spielen. hat aber auch viel zeit gekostet. die habe ich aber als pensionär.
mfg pebisoft
king-sixXx
12.05.2005, 22:46
Das glaub ich dir gern... So viel Zeit hab ich leider nicht... Mir würde aber auch eine einfache Strophe reichen :-)
Kannst du mir einen Tipp geben woran es liegen könnte?
Mfg
Benedict
pebisoft
12.05.2005, 23:33
du brauchst bei inkey keine do-loop schleife machen. bascom bleibt da solange hängen bis eine taste gedrückt wird. mit inkey kannste keine baud-botschaft abfragen, geht nur über "input test". test ist ein string.
mfg pebisoft
Kollege,
Gosub Machwas -----> Machwas ,,, goto ist tödlich
Auf gosub muß return kommen, sonst spinnt er sich weg.
Testen tu' erstmal mit einem Terminal, Zeichen kannst du ja mal andere nehmen (65 == "A", 66 == "B") oder so.
Testen kann er's auch mit seinen werten 70="F" 80= "P"
Stimmt, mit den returns hast du recht.
Dann muß aber auch hinter das Hauptprogramm ein END
Sonst spinnt er auch.
bleibt da solange hängen bis eine taste gedrückt wird. mit inkey kannste keine baud-botschaft abfragen
Inkey bezieht sich auf die serielle Schnittstelle und wartet nicht bis ein Zeichen kommt, sondern gibt eine "0" raus wenn kein Zeichen empfangen wurde.
Von daher sollte es gehen.
Hab' Inkey aber noch nie benutzt. Vielleicht irre ich mich ja auch, aber so verstehe ich das Handbuch.
Im Sim geht's auch so. Hab' nur noch LCD Befehle reingemacht, damit man was sieht ;)
$baud = 9600
Config Portb = Output
Dim Zeichen As Byte
Zeichen = 0
Rsabfrage:
Do
Zeichen = Inkey()
Loop Until Zeichen <> 0
If Zeichen = 70 Then Gosub Machwas
If Zeichen = 80 Then Gosub Mach
Goto Rsabfrage
End 'end program
Machwas:
Portb.1 = 1
Lcd "1"
Return
Mach:
Portb.1 = 0
Lcd "2"
Return
Gruß
Christopher
Du hast definitiv recht, inkey warte nicht. Du solltest ihn aber verwenden, da der Befehl auch mit "config serialin=buffer" kooperiert. Wenn du UDR selbst liest, amputierst du ihn da.
king-sixXx
13.05.2005, 13:55
Vielen Dank für die Hinweise! ich werde es das Wochenende mal ausprobieren... Irgendwann muss es doch laufen!
Frohe Pfingsten!
Benedict
Probiers mal hiermit.
$regfile = "m8535.dat"
$crystal = 10000000
$baud = 9600
Dim Rx_count As Byte 'ischarwaiting variabel
Dim Rx_data As Byte 'Empfangenen Daten
Config Serialin = Buffered , Size = 10
Do
Rx_count = Ischarwaiting()
If Rx_count > 0 Then
Rx_data = Inkey()
Select Case Rx_data
Case 70
Print "Habe 70 erhalten."
Case 80
Print "Habe 80 erhalten."
End Select
End If
Loop
End
getaco
king-sixXx
23.05.2005, 23:15
Hi Leute
ich hab jetzt mal beide Proggies (das von chr-mt und von Getaco) ausprobiert.
Wenn ich im Bascom Terminal "Send ASCII Character" anklicke und dann 70 oder 80 eintippe, sehe ich an der M101 Station duch das blinken der LED, dass was gesendet wird und kurz darauf wieder ein Aufleuchten... Leider wird im Terminal nix angezeigt!
Heißt das Blinken das es theoretisch funzt?!?
MFG!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.