diff options
Diffstat (limited to 'libaltos')
| -rw-r--r-- | libaltos/Makefile.am | 2 | ||||
| -rw-r--r-- | libaltos/libaltos.c | 24 | 
2 files changed, 19 insertions, 7 deletions
diff --git a/libaltos/Makefile.am b/libaltos/Makefile.am index b5ab1ddb..41549558 100644 --- a/libaltos/Makefile.am +++ b/libaltos/Makefile.am @@ -42,7 +42,7 @@ MINGCC64=x86_64-w64-mingw32-gcc  MINGFLAGS=-Wall -DWINDOWS -DBUILD_DLL -I$(JVM_INCLUDE)  MINGLIBS=-lsetupapi -fat: altos.dll altos64.dll +fat: all altos.dll altos64.dll  altos.dll: $(libaltos_la_SOURCES)  	$(MINGCC32) -o $@ $(MINGFLAGS) -shared $(libaltos_la_SOURCES) $(MINGLIBS) diff --git a/libaltos/libaltos.c b/libaltos/libaltos.c index fc949c70..4a6363ed 100644 --- a/libaltos/libaltos.c +++ b/libaltos/libaltos.c @@ -994,6 +994,11 @@ log_message(char *fmt, ...)  	if (!log)  		log = fopen("\\temp\\altos.txt", "w");  	if (log) { +		SYSTEMTIME time; +		GetLocalTime(&time); +		fprintf (log, "%4d-%02d-%02d %2d:%02d:%02d. ",  +			 time.wYear, time.wMonth, time.wDay, +			 time.wHour, time.wMinute, time.wSecond);  		va_start(a, fmt);  		vfprintf(log, fmt, a);  		va_end(a); @@ -1339,6 +1344,7 @@ altos_open(struct altos_device *device)  		file->handle = open_serial(full_name);  		if (file->handle != INVALID_HANDLE_VALUE)  			break; +		altos_set_last_windows_error();  		Sleep(100);  	} @@ -1373,13 +1379,19 @@ altos_open(struct altos_device *device)  PUBLIC void  altos_close(struct altos_file *file)  { -	if (file->handle != INVALID_HANDLE_VALUE) { -		CloseHandle(file->handle); +	HANDLE	handle = file->handle; +	if (handle != INVALID_HANDLE_VALUE) { +		HANDLE	ov_read = file->ov_read.hEvent; +		HANDLE	ov_write = file->ov_write.hEvent; +		file->handle = INVALID_HANDLE_VALUE; +		file->ov_read.hEvent = INVALID_HANDLE_VALUE; +		file->ov_write.hEvent = INVALID_HANDLE_VALUE; +		PurgeComm(handle, PURGE_RXABORT|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_TXCLEAR); +		Sleep(100); +		CloseHandle(handle);  		file->handle = INVALID_HANDLE_VALUE; -		SetEvent(file->ov_read.hEvent); -		SetEvent(file->ov_write.hEvent); -		CloseHandle(file->ov_read.hEvent); -		CloseHandle(file->ov_write.hEvent); +		CloseHandle(ov_read); +		CloseHandle(ov_write);  	}  }  | 
