Który program zastąpi mi HyperTerminal pod MS Vista?

Coś mu też ten "RTS on TX" też nie działa... Po wybraniu na siłę COM1 jestem w stanie wysłać znaki ale nie odbieram.

Reply to
Pszemol
Loading thread data ...

Zbych pisze:

Oj niebezpieczne podejście. A nie da się najpierw zapytać systemu, jakiej długości bufor jest potrzebny?

Zresztą ta funkcja działa podobno tylko od Windows 2000 w górę:

formatting link
Ja w swoich programach stosuję sposób listowania urządzeń używany np. w systemowym Menedżerze urządzeń i działa to poprawnie począwszy od systemu Windows 95 OSR2 aż po 64-bitowy Windows 7. Używam do tego funkcji: SetupDiGetClassDevs, SetupDiEnumDeviceInfo, SetupDiGetDeviceRegistryProperty, SetupDiDestroyDeviceInfoList. Dodatkowo odczytuję adres bazowy portu LPT przy pomocy zestawu: CM_Get_DevNode_Status, CM_Get_First_Log_Conf, CM_Get_Next_Res_Des, CM_Get_Res_Des_Data, CM_Free_Log_Conf_Handle.

No ale koniec takich szczegółów bo robi się lekko NTG.

Reply to
Adam Dybkowski

Adam Dybkowski pisze:

Podejście jest bezpieczne, bo podajesz jak długi masz bufor. System nie pomaże ci pamięci. A co do sprawdzenia jak długi bufor jest potrzebny, to w msdn nie znalazłem żadnych podpowiedzi.

A to mi wcale nie przeszkadza. Jak ktoś lubi pracować na systemie sprzed 10 lat to już nie mój problem.

Możesz wkleić przykładowy kod listujący porty?

Dlaczego NTG? Porty komputera są jak najbardziej w temacie grupy :-).

Reply to
Zbych

Zbych pisze:

Pierwszy z brzegu przykład (nie z ISP Programmera):

void enum_ports_nt(void) { GUID lptcom = {0x4d36e978, 0xe325, 0x11ce, {0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18}}; HDEVINFO h; BOOLEAN res; char dev_name[256]; SP_DEVINFO_DATA devinfo_data; DWORD i;

h = SetupDiGetClassDevs(&lptcom, NULL, 0, DIGCF_PRESENT | DIGCF_PROFILE); if (h == INVALID_HANDLE_VALUE) { err("SetupDiGetClassDevs"); return; }

i = 0; do { devinfo_data.cbSize = sizeof(SP_DEVINFO_DATA); res = SetupDiEnumDeviceInfo(h, i, &devinfo_data); if (res) { if (SetupDiGetDeviceRegistryProperty(h, &devinfo_data, SPDRP_FRIENDLYNAME, NULL, dev_name, sizeof(dev_name), NULL)) printf("%s\n", dev_name); //print_io_information(&devinfo_data.DevInst, 0); i++; } } while (res);

SetupDiDestroyDeviceInfoList(h); }

void err(const char *fun) { LPVOID buf; DWORD errcode = GetLastError();

FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &buf, 0, NULL); printf("Blad %d w funkcji %s(): %s\n", errcode, fun, buf); LocalFree(buf); }

Pocięło linie na kawałki ale da się zrozumieć po skopiowaniu do edytora. Sorry reszta grupy za nieprzydatnego dla większości elektroników posta.

Reply to
Adam Dybkowski

Skad Ci to przyszlo do glowy??

Co prawda ja z lenistwa .net uzywam, ale dobrze miec takie male snippety, wiec to jest uzyteczne (no bo jakie urzadzenie teraz nie gada z komputerem? Jeszcze troche i multiwibratory beda z PIcami/Atmelkami).

Skopiowane do prywatnej kolekcji ;-)

Reply to
Jerry1111

A taki prosty (od razu pisze że nie sprawdzony bo nie mam żadnego kompa z Vistą pod ręką) pomysł - skopiować Hyperterminal z jakiegoś kompa z XP'ekiem, może zadziała pod Vistą?

pozdrawiam

Reply to
Piotr D.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.