Hallo Leute,
ich bin neu hier und möchte mich gleich mit einem Problem an euch wenden.
Vielleicht kann mir hier jemand weiterhelfen.
Es ist eigentlich relativ trivial, aber ich habe jetzt schon Tage damit verbracht, dem Problem auf den Grund zu gehen, leider ohne Erfolg.
Ich möchte einen Wert auf dem CAN-Bus senden und gleichzeitig aber auch die Serielle Schnittstelle auf ein Zeichen abfragen.
Das funktioniert auch einwandfrei, wenn ich das eine oder das andere mache, aber nicht beides gleichzeitig.
Dazu habe ich den Code vereinfacht angehängt.
Wenn ich "canstatus = Cansend(10 , Can_msg1(1), 8)" ausblende (als Kommentar markiere), dann kann ich die Zeichen von der seriellen Schnittstelle ohne Probleme einlesen.
Wenn ich "canstatus = Cansend(10 , Can_msg1(1), 8)" wieder einblende, dann kann ich über inkey, oder auch waitkey, etc. keine Zeichen von der seriellen Schnittstelle einlesen, das Senden auf dem CAN funktioniert aber einwandfrei.
Egal ob ich die SW oder HW Variante der seriellen Schnittstelle (USART) wähle, oder die CAN Botschaft über Interrupt verschicke, beides gleichzeitig funktioniert nicht richtig.
Ein über das Terminal an die serielle Schnittstelle geschicktes Zeichen wird nicht über Inkey erkannt bzw. Inkey gibt immer 0 aus.
Wer kann mir hier weiterhelfen?
Bitte entschuldigt, wenn ich vergessen habe etwas anzugeben. Sagt mir einfach, was noch an Infos fehlt, um weiterhelfen zu können.
Vielen Dank vorab!
Alles anzeigen
ich bin neu hier und möchte mich gleich mit einem Problem an euch wenden.
Vielleicht kann mir hier jemand weiterhelfen.
Es ist eigentlich relativ trivial, aber ich habe jetzt schon Tage damit verbracht, dem Problem auf den Grund zu gehen, leider ohne Erfolg.
Ich möchte einen Wert auf dem CAN-Bus senden und gleichzeitig aber auch die Serielle Schnittstelle auf ein Zeichen abfragen.
Das funktioniert auch einwandfrei, wenn ich das eine oder das andere mache, aber nicht beides gleichzeitig.
Dazu habe ich den Code vereinfacht angehängt.
Wenn ich "canstatus = Cansend(10 , Can_msg1(1), 8)" ausblende (als Kommentar markiere), dann kann ich die Zeichen von der seriellen Schnittstelle ohne Probleme einlesen.
Wenn ich "canstatus = Cansend(10 , Can_msg1(1), 8)" wieder einblende, dann kann ich über inkey, oder auch waitkey, etc. keine Zeichen von der seriellen Schnittstelle einlesen, das Senden auf dem CAN funktioniert aber einwandfrei.
Egal ob ich die SW oder HW Variante der seriellen Schnittstelle (USART) wähle, oder die CAN Botschaft über Interrupt verschicke, beides gleichzeitig funktioniert nicht richtig.
Ein über das Terminal an die serielle Schnittstelle geschicktes Zeichen wird nicht über Inkey erkannt bzw. Inkey gibt immer 0 aus.
Wer kann mir hier weiterhelfen?
Bitte entschuldigt, wenn ich vergessen habe etwas anzugeben. Sagt mir einfach, was noch an Infos fehlt, um weiterhelfen zu können.
Vielen Dank vorab!
BASCOM-Quellcode
- $regfile = "m128can.dat"
- $crystal = 16000000
- $hwstack = 100
- $swstack = 100
- $framesize = 100
- $prog &HFF , &HFF , &HB9 , &HFF
- $baud = 19200
- '******************* Globale Variablen *******************
- Dim A As Byte
- Dim Can_msg1(8) As Byte
- Dim _canpage As Byte , _canid As Dword , _can_mobints As Word
- Dim Can_byte As Word
- Dim canstatus as byte
- '******************* Konfiguration CAN-Bus *******************
- Canreset ' reset can controller
- Canclearallmobs ' clear alle message objects
- Canbaud = 500000 ' use 500 KB
- Config Canbusmode = Enabled ' enabled,standby,listening
- Config Canmob = 10 , Bitlen = 11 , Idtag = &H0100 , Msgobject = Disabled , Msglen = 8 ' this mob is used for sending data
- '******************* Konfiguration RS232 *******************
- Config Serialin = Buffered , Size = 169
- Enable Interrupts
- '------------------------------------------------------------------------------
- '-------------------- Hauptprogramm -------------------------
- '------------------------------------------------------------------------------
- Do
- A = Inkey()
- If A > 0 Then
- Print "ASCII code " ; A ; " from serial"
- End If
- Can_msg1(1) = 100
- canstatus = Cansend(10 , Can_msg1(1), 8)
- Loop
- End
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bascomuser ()