C#-atmega-COM1-binaer anstelle ascii zeichen

Gast #1378126
Lesenswert?

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!!!!
#1378293
Lesenswert?

C#ler schrieb:

> 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:

> //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.

Fang an daran zu arbeiten.
Wenn deine Textkommunikation schon nicht richtig funktioniert, hat es 
keinen Sinn da noch einen drauf zu legen und auf binär zu gehen. Du 
wirst damit erst recht Schiffbruch erleiden.


Wenn du auf PC-Seite kein C# Programm laufen hast, sondern ein 
Terminalprogramm, kommen die Zeichen dann richtig an?
#1379970
Lesenswert?

Thomas Linder schrieb:
>> Wenn du auf PC-Seite kein C# Programm laufen hast, sondern ein
>> Terminalprogramm, kommen die Zeichen dann richtig an?
>
> Nein tun sie nicht

Welchen Sinn hat es dann mit einem C# Programm eine Kommunikation zu 
versuchen? Offensichtlich stimmt da irgendetwas nicht, wenn noch nicht 
mal ein Terminalprogramm das vom µC gesendete korrekt empfängt. Denkst 
du, dass dein C# Programm etwas kann, was andere nicht können?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren