Страница 4 из 4
Re: программа оболочка для win и программирование
Добавлено: Ср окт 13, 2010 12:22:59
RuLex
Шутить изволите?
Не "USB1", а "COM1"
Хм... А вообще ведь правда. Щас проверил - листинг доступных для SerialPort портов состоит из единственного COM1. А куча существующих в диспетчере USB-шек отсутствуют в списке. Впрочем, я ведь помню... USB порт может работать как COM, точнее в режиме его эмуляции, тогда по идее SerialPort доступ получит. Вот только мне что-то кажется для этого нужен или драйвер соответствующий, или ещё что. А, и код выше - ругается именно на USB1 :)
ЗЫ: Задумался о смысле жизни - стандарт USB уже лет эдак 10 минимум есть... А компонента в .NET для простой работы с ним - до сих пор не появилось. Странно - хотя вроде говорят есть сторонние, щас погуглил, нашёл что это работается через COM (только не порт, а библиотеки) :) Ну и сторонние библиотеки какие-то. Типа вот:
http://www.codeproject.com/KB/cs/USB_HID.aspx Правда всё равно странно :)
ЗЫ2. Вообще интересно, у меня на материнке уже никаких COM-LPT нет, и не предусмотрено. Что определяет компонент - тайна великая еси. Может правда где распаян, а наружу вывода не имеет))) Надо полистать документацию...
Re: программа оболочка для win и программирование
Добавлено: Ср окт 13, 2010 13:10:53
PB_EXPERT
По поводу USB HID, здесь есть инфа
http://radiokot.ru/forum/viewtopic.php? ... &start=100
Там можно найти библиотеку
HID_Lib_PB.dll и примеры её использования.
Она работает как с нативными прогами, так и с прогами, на платформе .NET
Re: программа оболочка для win и программирование
Добавлено: Ср окт 13, 2010 23:40:56
Jack_A
Интересно : будет ли .DLL работать в другой среде - например, в Delphi ?
Посмотрел - вроде этот вопрос уже задавали, но ясности нет. Не то, чтобы я был противник PB, просто на старости лет изучать еще одну среду программирования влом. Хотя с классическим Васиком я в ладах, пришлось даже его взламывать и прикошачивать примочку - исключительно в мирных целях.
Re: программа оболочка для win и программирование
Добавлено: Ср окт 13, 2010 23:51:57
PB_EXPERT
Да DLL будет работать.
Как-то экспериментировал с этим, но с сожалению проект на Дельфи 7 не могу найти.
Jack_A писал(а):Хотя с классическим Васиком я в ладах
Посмотрите вот на проект работающий в программатором PICkit 2
http://pure-basic.narod.ru/article/pickit2.html
Правда, там используется не DLL, а библиотека функций, поддержки HID девайсов. Но посколько именно на основе этой библиотеки, была создана DLLка, то думаю что не составит труда понять ее работу.
Re: программа оболочка для win и программирование
Добавлено: Чт окт 14, 2010 12:50:18
DX168B
Простите, если не в тему. Вот у меня ситуация. Мне надо, чтобы например клиентская программа (Win98, WinXP) открывала TCP порт и устанавливала соединение с программой-сервером.
Далее клиент и сервер открывают порты COM на своих машинах. То есть мне надо сделать подобие ретранслятора [COM - TCP\IP - COM] в обоих направлениях. С COM портами я знаком и имею кучу вариантов реализации его работы. А вот с реализацией TCP в приложении не очень...
Подскажите какой - нибудь вариант кода С++ для консольного приложения Win32(для сервера и клиента).
Желательно с использованием WinAPI и попроще. И желательно под Visual Studio 6.0 или VS 2008. Чтобы было так - вбил IP сервера, вбил TCP порт сервера и установил соединение. Сервер, чтоб при запуске открывал тот порт и был готовым для принятия соединений. Мне это надо для связи двух МК по UART через LAN. Гугл какую-то бурду выдаёт.
Re: программа оболочка для win и программирование
Добавлено: Чт окт 14, 2010 14:36:30
DX168B
Вопрос отпадает - нашёл материал и разобрался. Позже буду лепить.

Re: программа оболочка для win и программирование
Добавлено: Вс дек 12, 2010 00:09:47
DX168B
Приветствую всех котов. Есть небольшой вопрос. Подходящей темы не нашёл, буду писать тут.
Собственно вопрос в программировании на C++.
Имеем один массив char query[60]
Мне в него надо забить данные такого рода:
SELECT (свои данные) FROM users WHERE ID=(свои данные)
Свои данные надо добавить из другого массива типа char data[30]
А можно и из двух разных массивов.
Например мне надо выполнить запрос в СУБД такого вида:
SELECT "psw" FROM users WHERE ID="1"
(в кавычках - это данные, которые надо добавить из другого(их) массива(ов)
Как засунуть это всё в один массив?
Позже:
Опять лишнюю панику поднял.
sprintf(char[], const char[]); мне в помощь.
Разобрался.
Re: программа оболочка для win и программирование
Добавлено: Пн дек 13, 2010 17:29:48
avreal
Только тогда лучше бы
snprintf(char *str, size_t size, const char *format, ...);
Ей передаётся размер принимающего массива и она не вылезет за пределы.
Re: программа оболочка для win и программирование
Добавлено: Пн дек 13, 2010 20:22:27
DX168B
Я в принципе сделал так(кусок кода):
Код: Выделить всё
int DBquery(const char *column, const char *id)
{
char query[512];
sprintf(query, "SELECT '%s' FROM users WHERE ID='%s'", column, id);
if (mysql_query(&mysql, query))
{
display("Ошибка запроса!");
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
_getch(); return 1;
}
................
........
......
}
Да вот как раз и подумал о переполнении массива
query[512]
Cпасибо, попробую.

Re: программа оболочка для win и программирование
Добавлено: Вт дек 14, 2010 01:53:30
DX168B
Опять решил достать вопросами.
Имеем массив
char data[100]
В нём есть данные(записаны цифры и буквы через "
;"):
bg;1;10;1234;
Как мне раскидать эти значения по разным массивам типа char[20] ?
То есть "
bg" в один массив, "
1" в другой, "
10" в третий и "
1234" в четвёртый.
Делал так(тут без значения "
bg"):
Код: Выделить всё
unsigned int a=0, b=0;
char data[100], idd[10], idu[10], upsw[20];
display("Введите данные в формате: IDDevice(4);usrID(4);Password(20);");
cin >> data;
while(a<100)
{
if (data[a]==';'){a++;b=0;break;}
idd[b] = data[a];
a++;
b++;
}
while(a<100)
{
if (data[a]==';'){a++;b=0;break;}
idu[b] = data[a];
a++;
b++;
}
while(a<100)
{
if (data[a]==';'){a=0;b=0;break;}
upsw[b] = data[a];
a++;
b++;
}
cout<<idd<<" - "<<idu<<" - "<<upsw<<endl;
_getch();
В первых двух массивах(
idd и
idu) получается бурда,
а в последнем(
upsw) всё ОК.
Re: программа оболочка для win и программирование
Добавлено: Вт дек 14, 2010 09:47:42
ARV
вообще-то есть функция sscanf(), которая как бы и предназначена для разбора введенной пользователем строки... причем может вводить не только строки в массивы, но и сразу числа в переменные, если надо...
ну а раз вы юзаете С++ с его потоками ввода, так надо пользоваться возможностями языка: С++ умеет (собственно, любой язык умеет) вводить значения сразу в переменные и т.п. , не обязательно сначала все в кучу, а потом разбираться...
Re: программа оболочка для win и программирование
Добавлено: Вт дек 14, 2010 17:25:46
DX168B
Спасибо за совет.

Я в принципе новичоГ в Си.
А на счёт вводить сразу в свои переменные - нет, мне нужно именно разобрать, так как данные будут приходить в таком виде с микроконтроллера через COM порт.
cin>>data; - это, так - чтобы ввести пакет вручную, для проверки своего изврата. Вот этот "пакет" мне и надо будет разбирать на части. На счёт своей ошибки - понял, почему была бурда. Надо было массив читать наоборот и тогда проблем бы небыло, но раз вы подсказали про ф-ю
sscanf(); то буду юзать её.
Позже:
Ну и намучался я с этой int sscanf(buffer, format-string[, argument...], var,...);
Тоже делала бурду с char. Но так как у меня в буфере только цифры, а первые две буквы предназначаются только другим МК в сети, то решил использовать int. Типа так:
Код: Выделить всё
int idd, idu, upsw;
char data[100];
display("Введите данные в формате: bg:'IDDevice(4)'.'usrID(4)'.'Password(20)';");
cin>>data;
sscanf(data, "bg:%d.%d.%d;", &idd, &idu, &upsw);
cout<<idd<<" - "<<idu<<" - "<<upsw<<endl;
_getch();
Так работает отлично и вроде устраивает.
Всё, с БД закончено(только до ума надо будет довести), с пакетами тоже.
Остался COM порт, но это пустяк - не впервой с ним имел дело. Всем спасибо за помощь.
