vector<string> PrinterSerial::FindPorts() { vector<string> ports; #ifdef WIN32 char name[5]; strncpy( name, "COMx", 5 ); for ( int i = 0; i <= 9; i++ ) { name[3] = i + '0'; if ( TestPort( name ) ) ports.push_back( name ); } return ports; #else DIR *dir; struct dirent *de; if ( ( dir = opendir( "/dev" ) ) == NULL ) return ports; while ( ( de = readdir( dir ) ) ) { if ( strncmp( de->d_name, "ttyUSB", 6 ) == 0 ) ports.push_back( string( "/dev/" ) + de->d_name ); else if ( strncmp( de->d_name, "ttyACM", 6 ) == 0 ) ports.push_back( string( "/dev/" ) + de->d_name ); else if ( strncmp( de->d_name, "cuaU", 4 ) == 0 ) ports.push_back( string( "/dev/" ) + de->d_name ); } closedir( dir ); return ports; #endif }
/*____________________________________________________________________*/ void Ports( void) { short i; print ("\nChecking ports\n"); print ("-----------------------------\n"); ResetFilter(); for(i=0; i<LastPort; i++) { print (" port %d : ", i); RejectPort(myFilterPtr,i); TestPort( i); AcceptPort(myFilterPtr,i); flush; } }