void xml_editor::test_save() { QVector<serial_info> a; a.push_back(serial_info("Dexter", 5, 6)); a.push_back(serial_info("Misfits", 1, 4)); QVector<serial_info> b(load_data()); save_data(b); }
QVector<serial_info> xml_editor::load_data() { QVector<serial_info> res; QString title; int season, episode; QDomDocument doc; QFile file(name_file); if (!file.open(QIODevice::ReadOnly)) return res; if (!doc.setContent(&file)) { file.close(); return res; } file.close(); QDomElement docElem = doc.documentElement(); for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { QDomElement serial = node.toElement(); title = serial.firstChildElement("title").text(); season = serial.firstChildElement("season").text().toInt(); episode = serial.firstChildElement("episode").text().toInt(); res.push_back(serial_info(title, season, episode)); } return res; }
static int serial(int argc, char ** argv) { struct chrdev * device = NULL; ssize_t (* read_func)(struct chrdev *, u8_t *, size_t); struct serial_parameter param; char * name = NULL, * str = NULL; char * baud = 0; char * data_bit = 0; char * parity = 0; char * stop_bit = 0; u8_t c; s32_t i; if(argc < 2) { serial_info(); return 0; } if( !strcmp((const char *)argv[1],"info") ) { serial_info(); } else if( !strcmp((const char *)argv[1],"send") ) { if(argc != 4) { printk("usage:\r\n serial [info]\r\n" " serial send <DEVICE NAME> <STRING>\r\n" " serial recv <DEVICE NAME>\r\n" " serial param <DEVICE NAME> [-b BAUD] [-d DATABITS] [-p PARITY] [-s STOPBITS]\r\n"); return (-1); } name = (char *)argv[2]; str = (char *)argv[3]; device = search_chrdev_with_type((const char *)name, CHR_DEV_SERIAL); if(!device) { printk(" not found serial device \"%s\"\r\n", name); printk(" try 'serial info' for list all of serial devices\r\n"); return -1; } if(device->open) (device->open)(device); if(device->write) (device->write)(device, (u8_t *)str, strlen(str)); if(device->close) (device->close)(device); } else if( !strcmp((const char *)argv[1],"recv") ) { if(argc != 3) { printk("usage:\r\n serial [info]\r\n" " serial send <DEVICE NAME> <STRING>\r\n" " serial recv <DEVICE NAME>\r\n" " serial param <DEVICE NAME> [-b BAUD] [-d DATABITS] [-p PARITY] [-s STOPBITS]\r\n"); return (-1); } name = (char *)argv[2]; device = search_chrdev_with_type((const char *)name, CHR_DEV_SERIAL); if(!device) { printk(" not found serial device \"%s\"\r\n", name); printk(" try 'serial info' for list all of serial devices\r\n"); return -1; } if(device->open) (device->open)(device); if(device->read) { read_func = device->read; while(1) { if(read_func(device, &c, 1) == 1) { if(isprint(c) || isspace(c)) printk("%c", c); else printk("<%02x>", c); } if(ctrlc()) break; } } if(device->close) (device->close)(device); } else if( !strcmp((const char *)argv[1],"param") ) { if(argc < 3) { printk("usage:\r\n serial [info]\r\n" " serial send <DEVICE NAME> <STRING>\r\n" " serial recv <DEVICE NAME>\r\n" " serial param <DEVICE NAME> [-b BAUD] [-d DATABITS] [-p PARITY] [-s STOPBITS]\r\n"); return (-1); } for(i=2; i<argc; i++) { if( !strcmp((const char *)argv[i],"-b") && (argc > i+1)) { baud = (char *)argv[i+1]; i++; } else if( !strcmp((const char *)argv[i],"-d") && (argc > i+1)) { data_bit = (char *)argv[i+1]; i++; } else if( !strcmp((const char *)argv[i],"-p") && (argc > i+1)) { parity = (char *)argv[i+1]; i++; } else if( !strcmp((const char *)argv[i],"-s") && (argc > i+1)) { stop_bit = (char *)argv[i+1]; i++; } else if(*argv[i] != '-' && strcmp((const char *)argv[i], "-") != 0) { name = (char *)argv[i]; device = search_chrdev_with_type((const char *)name, CHR_DEV_SERIAL); if(!device) { printk(" not found serial device \"%s\"\r\n", name); printk(" try 'serial info' for list all of serial devices\r\n"); return -1; } if(!(device->ioctl)) { printk(" don't support ioctl function at this device.\r\n"); return -1; } } } if(!name) { printk("usage:\r\n serial [info]\r\n" " serial send <DEVICE NAME> <STRING>\r\n" " serial recv <DEVICE NAME>\r\n" " serial param <DEVICE NAME> [-b BAUD] [-d DATABITS] [-p PARITY] [-s STOPBITS]\r\n"); return (-1); } if(baud) { if(!strcmp(baud, "50")) param.baud_rate = B50; else if(!strcmp(baud, "75")) param.baud_rate = B75; else if(!strcmp(baud, "110")) param.baud_rate = B110; else if(!strcmp(baud, "134")) param.baud_rate = B134; else if(!strcmp(baud, "200")) param.baud_rate = B200; else if(!strcmp(baud, "300")) param.baud_rate = B300; else if(!strcmp(baud, "600")) param.baud_rate = B600; else if(!strcmp(baud, "1200")) param.baud_rate = B1200; else if(!strcmp(baud, "1800")) param.baud_rate = B1800; else if(!strcmp(baud, "2400")) param.baud_rate = B2400; else if(!strcmp(baud, "4800")) param.baud_rate = B4800; else if(!strcmp(baud, "9600")) param.baud_rate = B9600; else if(!strcmp(baud, "19200")) param.baud_rate = B19200; else if(!strcmp(baud, "38400")) param.baud_rate = B38400; else if(!strcmp(baud, "57600")) param.baud_rate = B57600; else if(!strcmp(baud, "76800")) param.baud_rate = B76800; else if(!strcmp(baud, "115200")) param.baud_rate = B115200; else if(!strcmp(baud, "230400")) param.baud_rate = B230400; else if(!strcmp(baud, "380400")) param.baud_rate = B380400; else if(!strcmp(baud, "460800")) param.baud_rate = B460800; else if(!strcmp(baud, "921600")) param.baud_rate = B921600; else { printk("unrecognize the parameter of baud rate \"%s\"\r\n", baud); return -1; } if(device->ioctl(device, IOCTL_WR_SERIAL_BAUD_RATE, (void *)(&(param.baud_rate))) < 0) { printk("setting serial device's baud rate fail. (%s)\r\n", device->name); return -1; } } if(data_bit) { if(!strcmp(data_bit, "5")) param.data_bit = DATA_BITS_5; else if(!strcmp(data_bit, "6")) param.data_bit = DATA_BITS_6; else if(!strcmp(data_bit, "7")) param.data_bit = DATA_BITS_7; else if(!strcmp(data_bit, "8")) param.data_bit = DATA_BITS_8; else { printk("unrecognize the parameter of data bits \"%s\"\r\n", data_bit); return -1; } if(device->ioctl(device, IOCTL_WR_SERIAL_DATA_BITS, (void *)(&(param.data_bit))) < 0) { printk("setting serial device's data bits fail. (%s)\r\n", device->name); return -1; } } if(parity) { if(!strcmp(parity, "N")) param.parity = PARITY_NONE; else if(!strcmp(parity, "E")) param.parity = PARITY_EVEN; else if(!strcmp(parity, "O")) param.parity = PARITY_ODD; else { printk("unrecognize the parameter of parity \"%s\"\r\n", parity); return -1; } if(device->ioctl(device, IOCTL_WR_SERIAL_PARITY_BIT, (void *)(&(param.parity))) < 0) { printk("setting serial device's parity fail. (%s)\r\n", device->name); return -1; } } if(stop_bit) { if(!strcmp(stop_bit, "1")) param.stop_bit = STOP_BITS_1; else if(!strcmp(stop_bit, "1.5")) param.stop_bit = STOP_BITS_1_5; else if(!strcmp(stop_bit, "2")) param.stop_bit = STOP_BITS_2; else { printk("unrecognize the parameter of stop bits \"%s\"\r\n", stop_bit); return -1; } if(device->ioctl(device, IOCTL_WR_SERIAL_STOP_BITS, (void *)(&(param.stop_bit))) < 0) { printk("setting serial device's stop bit fail. (%s)\r\n", device->name); return -1; } } printk("setting serial device's parameter successed. (%s)\r\n", device->name); return 0; } else { printk("serial: invalid option '%s'\r\n", argv[1]); printk("usage:\r\n serial [info]\r\n" " serial send <DEVICE NAME> <STRING>\r\n" " serial recv <DEVICE NAME>\r\n" " serial param <DEVICE NAME> [-b BAUD] [-d DATABITS] [-p PARITY] [-s STOPBITS]\r\n"); printk("try 'help serial' for more information.\r\n"); return (-1); } return 0; }