Hallo, ich arbeite derzeit an einer "eigentlich einfachen" Möglich, einen Attiny841 über ein Bluetooth Modul zu steuern. Es handelt sich bei dem BluetoothModul um diese typischen HC-05 Module. Parametriert ist dieses auf BAUD 38400. Später soll das ganze wenn möglich aber schneller laufen. Die ersten Gehversuche hatte ich mit 250k gemacht. 38400 war aber von den typischen Baudraten der schnellste ohne einer Fehlerquote >0.2%. 250k macht das HC-05 Modul standardmäßig leider nicht. Der Attiny841 wird mit internem Takt (8MHz) betrieben. Da ihr euch sicherlich nicht den ganzen Tag langweilt, setze ich hier vorerst einmal nur die entscheidenen Codeschnippsel rein. Auf Anfrage kann ich die anderen Sachen nachreichen. [c] using System; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace bottlelight_v2 { public partial class Form1 : Form { delegate void SetTextCallback(string text); private void buttonConnect_ButtonClick(object sender, EventArgs e) string port = toolStripComboBox_port.Text; int baud = 38400; try { /* port, baud, etc auslesen */ serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); serialPort.Open(); } catch { buttonClose_ButtonClick(this, null); } } private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { SetText(serialPort.ReadExisting()); } catch { buttonClose_ButtonClick(this, null); } } private void SetText(string text) { if(listBoxReceivedData.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); Invoke(d, new object[] { text }); } else { listBoxReceivedData.Items.Insert(0, text); } } } } Ich lasse mir die Werte direkt wieder zurückliefern. Nun werden hier aber sehr häufig Zeichen verschluckt. Kann es an der Methode liegen, wie ich die Daten hier in C# einlese?
Da die Forenteilnehmer, wie Du richtig erkannt hast, nicht den ganzen Tag Langeweile haben, wird sich das so keiner durchlesen. Vollkommen unformatiert, ohne Syntaxhighlighting. Lade es lieber als Anhang als .cs hoch. Entweder die Forensoftware formatiert es dann schön oder Visual Studio. Zu Deiner Frage, ohne den Quelltext gelesen zu haben: Schickt der AVR alles ordentlich weg (mit FTDI-UART mal dtübergucken)? Kommt am Rechner alles richtig an (mit Putty drübergucken)?
Hallo, im Anhang die cs Datei. Ich habe über die Data Visualizer (Atmel Studio) bereits geschaut, ob die Daten richtig kommen. Sende ich dort etwas, kommt das richtig an. Im Anhang noch einmal ein Screenshot vom Prog. listBoxReceivedData(oben mitt) zeigt den Fehler an, dass dort etwas falsch gelesen wurde Ich habe dazu einfach nur diesen Befehl aus dem AVR abgesetzt.
1 | case 0x20: // Reset |
2 | uart_puts("20,00,00,01\n"); |
3 | cmd_reset = 1; |
4 | break; |
Hab das ganze nocheinmal anders getestet. Bluetooth Modul vom AVR getrennt und mit USB-Serial Adapter verbunden. Über die WinForm fernbinde ich mich mit dem USB-Serial-Adapter. Über Putty finde ich mich mit dem Bluetooth Modul. Nun habe ich Putty so eingestellt, dass er nur sendet, wenn ich Enter drücke. Auch hier ist die Anzeige fehlerhaft. Im Anfang rechts die Putty EINGABE. Links die WinForm AUSGABE. Wie man sieht, schneidet er die Werte falsch ab.
Hab es nun soweit, dass er mir den String richtig zurückliefert. Kann morgen den Code mal anhängen. Das einzige Problem, was nun aufgetreten ist, ist das meine ISR für das einlesen des Strings nicht mehr flott genug ist. Mal schauen ob ich das gelöst bekomme, ansonsten muss ich warten bis die APAs da sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.