Changeset 258 in xtideuniversalbios for trunk/Serial_Server/win32
- Timestamp:
- Feb 22, 2012, 7:01:53 PM (13 years ago)
- google:author:
- gregli@hotmail.com
- Location:
- trunk/Serial_Server/win32
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Serial_Server/win32/Win32.cpp
r233 r258 30 30 " -n [megabytes] Create new disk with given size or use -g geometry", 31 31 " Maximum size is " USAGE_MAXSECTORS, 32 " (default is a 32 MB disk, with CHS geometry 65:63:16)", 33 "", 34 " -p Named Pipe mode for emulators (pipe is \"" PIPENAME "\")", 35 "", 36 " -c COMPortNumber COM Port to use (default is first found)", 32 " (default is a 32 MB disk, with CHS geometry 65:16:63)", 33 "", 34 " -p [pipename] Named Pipe mode for emulators", 35 " (must begin with \"\\\\\", default is \"" PIPENAME "\")", 36 "", 37 " -c COMPortNumber COM Port to use (default is first found)", 38 " Available COM ports on this system are:", 39 "COM ", 37 40 "", 38 41 " -b BaudRate Baud rate to use on the COM port, with client machine", … … 53 56 "with xtidecfg.com. Or one can hold down the ALT key at the end of the normal", 54 57 "IDE hard disk scan and the XTIDE Universal BIOS will scan COM1-7, at each of", 55 "the fourspeeds given above for BaudRate. Note that hardware rate multipliers",58 "the six speeds given above for BaudRate. Note that hardware rate multipliers", 56 59 "must be taken into account on the server end, but are invisible on the client.", 60 "", 61 "Floppy images may also be used. Image size must be exactly the same size", 62 "as a 2.88MB, 1.44MB, 1.2MB, 720KB, 360KB, 320KB, 180KB, or 160KB disk.", 63 "Floppy images must be the last disks discovered by the BIOS, and only", 64 "two floppy drives are supported by the BIOS at a time.", 57 65 NULL }; 58 66 59 67 for( int t = 0; usageStrings[t]; t++ ) 60 fprintf( stderr, "%s\n", usageStrings[t] ); 68 { 69 if( !strncmp( usageStrings[t], "COM", 3 ) ) 70 { 71 char logbuff[ 1024 ]; 72 73 SerialAccess::EnumerateCOMPorts( logbuff, 1024 ); 74 fprintf( stderr, "%s%s\n", usageStrings[t]+3, logbuff ); 75 } 76 else 77 fprintf( stderr, "%s\n", usageStrings[t] ); 78 } 61 79 62 80 exit( 1 ); … … 120 138 break; 121 139 case 'p': case 'P': 122 ComPort = "PIPE"; 140 if( argv[t+1][0] == '\\' && argv[t+1][1] == '\\' ) 141 ComPort = argv[++t]; 142 else 143 ComPort = PIPENAME; 123 144 if( !baudRate ) 124 145 baudRate = baudRateMatchString( "115200" ); -
trunk/Serial_Server/win32/Win32Serial.h
r233 r258 35 35 } 36 36 37 if( !strcmp( name, "PIPE" ))37 if( name[0] == '\\' && name[1] == '\\' ) 38 38 { 39 log( 0, "Opening named pipe %s (simulating %s baud)", PIPENAME, baudRate->display );39 log( 0, "Opening named pipe %s (simulating %s baud)", name, baudRate->display ); 40 40 41 pipe = CreateNamedPipeA( PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE|PIPE_REJECT_REMOTE_CLIENTS, 2, 1024, 1024, 0, NULL );41 pipe = CreateNamedPipeA( name, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE|PIPE_REJECT_REMOTE_CLIENTS, 2, 1024, 1024, 0, NULL ); 42 42 if( pipe == INVALID_HANDLE_VALUE ) 43 43 log( -1, "Could not CreateNamedPipe " PIPENAME ); … … 59 59 DCB dcb; 60 60 61 log( 0, "Opening %s (% lu baud)", name, baudRate->rate);61 log( 0, "Opening %s (%s baud)", name, baudRate->display ); 62 62 63 63 pipe = CreateFileA( name, GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); … … 74 74 dcb.Parity = NOPARITY; 75 75 if( !SetCommState( pipe, &dcb ) ) 76 log( -1, "Could not SetCommState" ); 76 { 77 char *msg = ""; 78 COMMPROP comProp; 79 80 if( GetCommProperties( pipe, &comProp ) ) 81 { 82 if( comProp.dwMaxBaud != BAUD_USER ) 83 msg = "\n On this COM port, baud rate is limited to 115.2K"; 84 } 85 log( -1, "Could not SetCommState: baud rate selected may not be availabele%s", msg ); 86 } 77 87 78 88 if( !SetCommTimeouts( pipe, &timeouts ) ) … … 82 92 { 83 93 char logbuff[ 1024 ]; 84 int found = 0;85 94 86 sprintf( logbuff, "serial port '%s' not found, detected COM ports:", name ); 87 88 for( int t = 1; t <= 40; t++ ) 89 { 90 sprintf( buff1, "COM%d", t ); 91 if( QueryDosDeviceA( buff1, buff2, sizeof(buff2) ) ) 92 { 93 strcat( logbuff, "\n " ); 94 strcat( logbuff, buff1 ); 95 found = 1; 96 } 97 } 98 if( !found ) 99 strcat( logbuff, "\n (none)" ); 95 EnumerateCOMPorts( logbuff, 1024 ); 100 96 101 log( -1, logbuff );97 log( -1, "Serial port '%s' not found, detected COM ports: %s", name, logbuff ); 102 98 } 103 99 } 100 } 101 102 static void EnumerateCOMPorts( char *logbuff, int logbuffLen ) 103 { 104 int found = 0; 105 char buff1[20], buff2[1024]; 106 107 logbuff[0] = 0; 108 109 for( int t = 1; t <= 40 && strlen(logbuff) < (logbuffLen - 40); t++ ) 110 { 111 sprintf( buff1, "COM%d", t ); 112 if( QueryDosDeviceA( buff1, buff2, sizeof(buff2) ) ) 113 { 114 if( found ) 115 strcat( logbuff, ", " ); 116 strcat( logbuff, buff1 ); 117 found = 1; 118 } 119 } 120 121 if( !found ) 122 strcat( logbuff, "(none)" ); 104 123 } 105 124
Note:
See TracChangeset
for help on using the changeset viewer.