hy @alle Experten! Bin grade am überlegen, ob ich Daten mit einer einfachen c#applikation binär anstelle ASCII, da das Senden von ASCII Zeichen oft bis zu 1 ms dauert, senden und empfangen kann. Meine Frage an euch ist: Was muss man c#mäßig und auch µCmäßig an folgenden Programmcode ändern: 1.C#:
1 | using System; |
2 | using System.Collections.Generic; |
3 | using System.ComponentModel; |
4 | using System.Data; |
5 | using System.Drawing; |
6 | using System.Text; |
7 | using System.Windows.Forms; |
8 | |
9 | namespace serialPort_test |
10 | { |
11 | public partial class Form1 : Form |
12 | { |
13 | private char x; |
14 | |
15 | |
16 | public Form1() |
17 | { |
18 | |
19 | |
20 | InitializeComponent(); |
21 | serialPort1.ReadBufferSize = 256;//Größe des Lese-Puffers festgelegt |
22 | serialPort1.WriteBufferSize = 256;//Größe des Schreib-Puffers festgelegt |
23 | |
24 | serialPort1.Encoding = Encoding.ASCII;//ASCII codierung-auf binary umstellen?) aktiviert |
25 | |
26 | |
27 | |
28 | } |
29 | |
30 | |
31 | private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) |
32 | { |
33 | |
34 | x = (char)(serialPort1.ReadByte());//((welche Einstellung soll dort gewählt werden um am eine Zahl von +128-127...darzustellen) Vorschläge wären fein...) |
35 | |
36 | } |
37 | } |
38 | } |
hier der µC Code:
1 | #include<avr/io.h> |
2 | int main(void) |
3 | {
|
4 | usartpar();//erforderlich zur USARTeinstellungsparametrisierung |
5 | |
6 | while(1) |
7 | {
|
8 | putch('a');//sendet an PC ein a |
9 | //in der textBox sollte eigentlich ein a stehen, jedoch zeigt es mir //ein "spanisches A" an, siehe angehängtes Bild(ASCII: 192), selbst, wenn ich ein anderes Zeichen schicke zeigt es immer nur dieses Zeichen an.
|
10 | }
|
11 | return 0; |
12 | }
|
13 | void usartpar(void) |
14 | {
|
15 | unsigned char x; // Hilfsvariable |
16 | #ifdef UBRRL // USART-Schnittstelle
|
17 | UBRRL = (TAKT / (8 * BAUD)) - 1; |
18 | UCSRB |= (1 << TXEN) | (1 << RXEN); |
19 | UCSRC |= (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); |
20 | #else // UART-Schnittstelle
|
21 | UBRR = (TAKT / (16 * BAUD)) - 1; |
22 | UCR |= (1 << TXEN) | (1 << RXEN); |
23 | #endif
|
24 | x = UDR; // Empfänger leeren |
25 | }
|
26 | void putch (unsigned char x) // warten und Zeichen senden |
27 | {
|
28 | #ifdef UCSRA
|
29 | loop_until_bit_is_set(UCSRA, UDRE); // warte bis Sender frei |
30 | #else
|
31 | loop_until_bit_is_set(USR, UDRE); // warte bis Sender frei |
32 | #endif
|
33 | UDR = x; // Zeichen nach Sender |
34 | }
|
Was sollte ich bei der putch Funktion abändern--HELP!!!!