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;
}
示例#3
0
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;
}