+#else // LOSE32
+ LPCTSTR ComName = (LPCTSTR)device;
+ HANDLE hComm;
+ DCB dcb;
+ serial_source src;
+
+ int buflen = MultiByteToWideChar(CP_ACP,0,(PCSTR)device,-1,(LPWSTR)ComName,0);
+ MultiByteToWideChar(CP_ACP,0,(PCSTR)device,-1,(LPWSTR)ComName,buflen);
+
+ //syncronize
+ hComm = CreateFile(ComName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL, NULL);
+
+ if (hComm == INVALID_HANDLE_VALUE) {
+ return NULL;
+ }
+
+ PurgeComm(hComm, PURGE_RXCLEAR);
+
+ GetCommState(hComm, &dcb);
+ dcb.BaudRate = baud_rate;
+ dcb.ByteSize = 8;
+ dcb.Parity = NOPARITY;
+ dcb.fParity = FALSE;
+ dcb.StopBits = ONESTOPBIT;
+ if (SetCommState(hComm, &dcb) == 0) {
+ return NULL;
+ }
+
+ src = malloc(sizeof *src);
+
+ if (src) {
+ memset(src, 0, sizeof *src);
+ src->hComm = hComm;
+ src->non_blocking = non_blocking;
+ src->message = message;
+ src->send.seqno = 37;
+
+ }
+
+ return src;
+
+#endif // LOSE32