static QStringList getRegPorts() { QStringList regPorts; QStringList result1 = regParse("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB", QRegExp("^VID_1FC9&PID_0083(.*)")); //QStringList result1 = regParse("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB", QRegExp("^VID_04E8&PID_6866(.*)")); //QStringList result1 = regParse("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB", QRegExp("^VID_(\\w{4})&PID_(\\w{4,})(.*)")); for (int i = 0; i < result1.size(); i ++) { QStringList result2 = regParse(QString("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\" + result1.at(i)), QRegExp("(.*)")); for (int j = 0; j < result2.size(); j ++) { QStringList result3 = regParse(QString("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\" + result1.at(i) + "\\" + result2.at(j)), QRegExp("\\Device Parameters")); for (int k = 0; k < result3.size(); k ++) { QSettings settings(QString("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\" + result1.at(i) + "\\" + result2.at(j) + "\\Device Parameters"), QSettings::NativeFormat); if (!settings.value("PortName").toString().isEmpty()) { regPorts.append(settings.value("PortName").toString()); //qDebug() << "======" + result1.at(i) + " " + regPorts.last(); } } } } return regPorts; }
regRegion* regReadAsciiRegion( char* filename, int verbose ) { regRegion *region = NULL; FILE *fp = NULL; char buf[SZ_LARGE]; long maxlen = SZ_LARGE; char *ptr; long sys = RC_UNK; char *string = NULL; long mode = RF_UNK; char *smodes[] = { "UNK", "PHYSICAL", "LOGICAL", "WORLD" }; char *modes[] = { "UNK", "SAOIMAGE", "SAOTNG", "PROS", "CXC", "DS9", "DS9_V4" }; fp = fopen(filename, "r"); if (!fp) { return NULL; } if (verbose >= 1) { fprintf(stderr, "cxcregion: parsing region file %s\n", filename); } string = calloc(SZ_LARGE, sizeof(char *)); while (reg_read_line(fp, buf, SZ_LARGE)) { ptr = buf; if ((ptr[0] == '#') && (mode != RF_UNK)) { continue; } while (*ptr == ' ') { ptr++; } if (*ptr) { reg_parse_line(ptr, &mode, &string, &maxlen, &sys); } } region = regParse(string); if (verbose >= 4) { fprintf(stderr, "Ascii Region Parse String = %s\n", string); fprintf(stderr, "SYS = %s FORMAT = %s\n", smodes[sys], modes[mode]); regPrintRegion(region); } free(string); return region; }