Forum: PC-Programmierung VS2008 Win32-Konsolenanwendung; Konvertierungsfehler


von frkifrov (Gast)


Lesenswert?

Um eine RS232-Schnittstelle einzulesen habe ich folgenden Programmcode 
in Visual Studio 2008 ersteinmal geschrieben (zum ausprobieren)
später soll das ganze mit c++ geschrieben werden und als klasse angelegt 
werden.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

int main()
{
  HANDLE hComm;
  DCB dcb;
  COMMTIMEOUTS  ct;
  int portnr=1;
  TCHAR portcom[10];
  int readdata;
  unsigned char bufferdata;
  DWORD data = 0;

  wsprintf(portcom, "COM%d", portnr);

  hComm = CreateFile( portcom, GENERIC_READ | GENERIC_WRITE,
      0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);

  if (hComm == INVALID_HANDLE_VALUE)
  {
    printf("Fehler beim Öffnen des Porst");
    return 0;
  }

  GetCommState(hComm, &dcb);
  dcb.BaudRate = 38400;
  dcb.ByteSize = 8;
  dcb.Parity = NOPARITY;
  dcb.StopBits = ONESTOPBIT;
  SetCommState(hComm, &dcb);

  for( ; ; )
  {
    readdata = ReadFile (hComm, &bufferdata, 1, &data, 0);

    if(readdata==FALSE)
    {
      printf("Fehler");
      return 0;
    }
    else
      printf("  %s  ", data);
  }

  return 0;
}

beim debuggen wurde mir folgender fehler angezeigt:


1>funktion.cpp
1>c:\documents and settings\a124368\my documents\visual studio 
2008\projects\versuch\versuch\funktion.cpp(17) : error C2664: 
'wsprintfW': Konvertierung des Parameters 2 von 'const char [6]' in 
'LPCWSTR' nicht möglich
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die 
Konvertierung erfordert einen reinterpret_cast-Operator oder eine 
Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Documents and 
Settings\xxx\My Documents\Visual Studio 
2008\Projects\versuch\versuch\Debug\BuildLog.htm" gespeichert.
1>versuch - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 
übersprungen ==========

kann mir hier jemand weiterhelfen, hab schon einiges ausprobiert

von gast (Gast)


Lesenswert?

Hallo,

> wsprintf(portcom, "COM%d", portnr);

mach mal

wsprintf(portcom, _T("COM%d"), portnr);

von frkifrov (Gast)


Lesenswert?

hab es, statt _T hab ich Z benutzt und es

noch folgendermaßen angegeben:

#ifdef    UNICODE
#define   Z(a)    L##a
#else
#define   Z(a)    a
#endif

grad beim weiteren stöbern gefunden, aber danke für den Tip

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
Noch kein Account? Hier anmelden.