fragen zum code SPI-Sample und AVR-CDC-SPI

Gast #2534253
Lesenswert?
• ▲
▼
Hy zusammen,
habe bezüglich den code ein paar fragen bzw.brauch ich tipps wie ich das 
umsetzten kann.

zum Code er empfängt werte Binär werte vom Controller und wandelt die um 
in hexadecimal um.

Ich wollte das er sie mir in decimal ausgibt (geschaft), aber er soll 
mit dem code rechnen da es werte eines AD-wandler sind.
Das programm wird mit cmd-befehl gestartet und wenn ich was sende werden 
mir 32 Byte jedes Byte einzelnt angezeigt.
1
#define  _CRT_SECURE_NO_WARNINGS
2
#include <windows.h>
3
#include <stdio.h>
4

5
static const char  *title = "\n\tSPI-tester \n";
6
static const char  *usage =   "\t\tusage: spitest port_number";
7

8

9
static int hex2bin( unsigned char *bin, char *hex )
10
{
11
  int        n;
12

13
  for( n=0; *hex; ) {
14
    if( *hex>' ' )
15
      bin[n++]  = (unsigned char)strtol( hex, &hex, 16 );
16
    else
17
      hex++;
18
  }
19
  return n;
20
}
21

22
static void bin2hex( char *hex, unsigned char *bin, int n )//bin2dec wandlung
23
{
24

25
  for( ; n>0; n-- )
26
    hex  += sprintf( hex, " %04i", *bin++ );  //"%02X"  X in Hex  "%03i" für Intiger als 4 stelle
27

28
  *hex  = 0;
29
}
30

31
int main(int argc, char *argv[])
32
{
33
  HANDLE      hCom;
34
  DWORD      rwlen;
35
  int        n, v, quit;
36
  char      *ptr, text[1024]; // war auf auf 256 eingestellt
37
  unsigned char  data[1]; //war auf 32 gestellt
38

39
  puts( title );
40

41
  if( argc!=2 ) {
42
    puts( usage );
43
    return -1;
44
  }
45

46
  /*  Open COM device  */
47
  sprintf( text, "\\\\.\\COM%s", argv[1] );
48
  hCom = CreateFile( text, GENERIC_READ|GENERIC_WRITE,
49
          0, 0, OPEN_EXISTING, 0, 0 );
50
  if( hCom==INVALID_HANDLE_VALUE ) {
51
    printf( "\terror: COM%s is not available.", argv[1] );
52
    return -2;
53
  }
54

55
  for( quit=0; !quit; ) {
56

57
    printf( " com%s < ", argv[1] );
58
    gets( text );
59

60
    for( ptr=text; *ptr<=' '; ptr++ )
61
    ;
62

63
    switch( *ptr ) {
64
      case 'Q':
65
      case 'q':  quit  = 1;
66
            break;
67
      case 'S':
68
      case 's':  for( ptr++; *ptr && *ptr!='0' && *ptr!='1'; ptr++ )
69
            ;
70
            if( *ptr ) {
71
              n  = *ptr - '0';
72
              for( ptr++; *ptr && *ptr!='0' && *ptr!='1'; ptr++ )
73
              ;
74
              if( *ptr ) {
75
                v  = *ptr - '0';
76
                EscapeCommFunction( hCom,
77
                  n? (v? SETDTR:CLRDTR):(v? SETBREAK:CLRBREAK) );
78
              }
79
            }
80
            break;
81
      default:
82
            n  = hex2bin( data, text );
83
            WriteFile( hCom, data, n, &rwlen, 0 );
84
            Sleep(100 );
85
            ReadFile( hCom, data, rwlen, &rwlen, 0 );
86

87
            bin2hex( text, data, n );
88
            printf( " com%s >%s\n", argv[1], text );
89
    }
90
  }
91

92
  CloseHandle( hCom );
93
  return 0;
94
}

Danke für Tipps und hilfe stellungen

MfG
Kluski

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.