Cześć wszystkim,
W programie do obsługi portu COM używam makra CreateFile(). Makro to przyjmuje jako argument nazwę portu w formacie LPCWSTR, które z kolei jest stałym ciągiem znaków wchar_t.
typedef wchar_t WCHAR;
typedef Null_terminated CONST WCHAR *LPCWSTR, *PCWSTR;
aż w końcu<code class="c">_In_ LPCWSTR lpFileName,
Póki co możliwe było przekazywanie nazwy portu poprzez makro TEXT(quote), dzięki czemu program działa bez zarzutu, jednak wymusza to "zadedykowanie" programu pod dany port poprzez sztywne wpisanie nazwy w kodzie. Chciałbym jednak mieć możliwość wpisania nazwy portu po uruchomieniu programu (przykładowo niech program czeka na jej wpisanie poprzez scanf() ).
Próbowałem przekazać nazwę portu jako ciąg znaków na wiele różnych sposobów kierując się typami zdefiniowanymi na podstawie wchar_t. Nie udało się jednak zrobić tego poprzez żaden ze sposobów, a tylko dwa z wypróbowanych przeze mnie nie kończą się błędem, jednak port nie zostaje otwarty. Sposób ten to po prostu brzydkie rzutowanie:
const char SomeText[] = "COM1";
TCHAR *PortName = (TCHAR*)SomeText;
lub
wchar_t ConstText[] = {(wchar_t)"COM2"};
/*i wszelkie inne kombinacje, których należy się wstydzić*/
Moje pytanie brzmi: jak przekazać nazwę pobraną przez scanf (lub jako argument main() ) do makra CreateFile() ? Nie mogłem nigdzie tego znaleźć i skończyły mi się pomysły... :(
Pozdrawiam :)