Mam taki kod:
// aplikacja.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//------------------------------------------------------------------------------
//
// SimConnect Data Request Sample
//
// Description:
// After a flight has loaded, request the lat/lon/alt of the user
// aircraft
//------------------------------------------------------------------------------
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
#include <cmath>
#include <iostream>
float okolo(float a) {
return round(a * 100) / 100;
}
#include "SimConnect.h"
int quit = 0;
HANDLE hSimConnect = NULL;
struct Struct1
{
double skret;
double przechyl;
};
static enum EVENT_ID{
EVENT_SIM_START,
};
static enum DATA_DEFINE_ID {
DEFINITION_1,
};
static enum DATA_REQUEST_ID {
REQUEST_1,
};
void CALLBACK MyDispatchProcRD(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
{
HRESULT hr;
SIMCONNECT_RECV_EVENT *evt = (SIMCONNECT_RECV_EVENT*)pData;
// Now the sim is running, request information on the user aircraft
hr = SimConnect_RequestDataOnSimObjectType(hSimConnect, REQUEST_1, DEFINITION_1, 0, SIMCONNECT_SIMOBJECT_TYPE_USER);
switch(pData->dwID)
{
case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE:
{
SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
switch(pObjData->dwRequestID)
{
case REQUEST_1:
{
DWORD ObjectID = pObjData->dwObjectID;
Struct1 *pS = (Struct1*)&pObjData->dwData;
printf("\nSkret=%f Przechyl=%f", okolo(pS->skret), okolo(pS->przechyl));
}
}
}
}
}
using namespace std;
int __cdecl _tmain(int argc, _TCHAR* argv[])
{
static DCB dcb;
static HANDLE hNumPort;
static char lpBuffor_read[33], lpBuffor_write[33];
static DWORD RS_ile;
hNumPort = CreateFile("COM3", GENERIC_WRITE |
GENERIC_READ, 0, NULL,
OPEN_EXISTING, 0, NULL);
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = CBR_19200;
dcb.fParity = FALSE;
//dcb.Parity = EVENPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = 8;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
HRESULT hr;
if(SUCCEEDED(SimConnect_Open(&hSimConnect, "Request Data", NULL, 0, 0, 0)))
{
printf("\nConnected to Flight Simulator!");
// Set up the data definition, but do not yet do anything with it
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "PLANE BANK DEGREES", "Degrees");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "PLANE PITCH DEGREES", "Degrees");
// Request an event when the simulation starts
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_SIM_START, "SimStart");
while (1) //while( 0 == quit )
{
SimConnect_CallDispatch(hSimConnect, MyDispatchProcRD, NULL);
Sleep(1000); //1
if (SetCommState(hNumPort, &dcb))
{
//double toSend = 5/7;
//strcpy(lpBuffor_write, toSend);// Niech to będzie przykładowe polecenie dla urządzenia
//WriteFile(hNumPort, lpBuffor_write, strlen(lpBuffor_write), &RS_ile, 0);
}
else printf("Nie da sie wyslac");
CloseHandle(hNumPort);
}
hr = SimConnect_Close(hSimConnect);
}
else printf("Nie da sie poloczyc");
return 0;
}
Aplikacja powinna się łączyć z grą, odczytać pozycję pojazdu i wysłać ją do mikrokontrolera. Sam kod wysyłania i sam kod wczytywania pozycji działają bez zarzutu, gdy połącze je do jednego programu i spróbuję skompilować pojawia mi się taki błąd:
1. Błąd (aktywny) E0167 argument typu "const char *" jest niezgodny z parametrem typu "LPCWSTR" linia 90
2. Błąd C2664 „HANDLE CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)”: nie można dokonać konwersji argumentu 1 z „const char [5]” do „LPCWSTR” ApkaFSX linia 90
Co jest nie tak?