еще раз баланс
Наконец-то догадался проверить :- Оказалось мой билайн-модем проверяет баланс посылая команду не на /dev/ttyUSB0, а на /dev/ttyUSB2 Заслав #echo -e 'AT+CUSD=1,*102#,15\r\n' /dev/ttyUSB2 я получил от #cat /dev/ttyUSB2 строчку в юникоде. Между тем, как я понял программа balans.c (прилагаю) посылает запрос на /dev/ttyUSB0 Как ее поправить, чтобы она посылала и прослушивала /dev/ttyUSB2 ? И.П. #include usb.h #include unistd.h #include iostream #include string.h #include errno.h #include iconv.h #include langinfo.h #include locale #include string #include fstream using namespace std; // ÐоÑÐµÐ¼Ñ Ð½Ðµ ÑделаÑÑ Ñак: // //int SendToDevice( char* bi, int len, usb_dev_handle *udev) //{ //int rc; //rc = usb_bulk_write(udev, 2, bi, len, 200); // //if (rc 0) { //rc=0; //coutendlrc:strerror(errno)endl; //} else coutin :bi len: rcendl; //coutrcendl; //return rc; //} // вÑзÑваÑÑ Ñак: // len=SendToDevice(initcom1, sizeof(initcom1)-1, udev); // РвообÑе C++ здеÑÑ Ð¸Ð·Ð»Ð¸ÑеÑÑво, можно обойÑиÑÑ ANSI C и даже chat(8) script. void SendToDevice( char* bi, int len, usb_dev_handle *udev) { int t; t=usb_bulk_write(udev, 2, bi, len, 200); if(t0)len=0; else len=t; if (t0) coutendlt:strerror(errno)endl;else coutin :bi len: tendl; //couttendl; } int main(void) { struct usb_bus *bus=NULL; struct usb_device *dev=NULL; usb_dev_handle *udev=NULL; char com[]=AT+CUSD=1,*102#,15\r\n; char initcom0[]=AT+ZOPERTE=\beeline\\r\n; char initcom1[]=AT+ZOPRT=5\r\n; char initcom2[]=AT+ZSTART\r\n; char initcom3[]=AT+CPBS=\SM\\r\n; char initcom4[]=AT+CPMS=\SM\,\SM\,\\\r\n; //char ans[512]={0}; char buf[512]={0}; int lenc,lenc1,len,i,j=0,t; fstream port; string ans; usb_init(); usb_find_busses(); usb_find_devices(); //find device and open handle for (bus = usb_busses; bus; bus = bus-next) for (dev = bus-devices; dev; dev = dev-next) if( (dev-descriptor.idVendor==6610) ( dev-descriptor.idProduct==49) ) { udev = usb_open(dev); } if(udev==0)return -1; usb_claim_interface(udev, 1); usb_set_altinterface(udev, 1); usb_resetep(udev, 2); lenc=0;while(com[lenc]!=0)lenc++;
Re: еще раз баланс
05.07.2009 15:03, Ivan Petrov пишет: Наконец-то догадался проверить :- Оказалось мой билайн-модем проверяет баланс посылая команду не на /dev/ttyUSB0, а на /dev/ttyUSB2 Ну если ты такой догадливый, то почему вместо того тобы прочитать текст программы хотябы 1 раз ты его постишь сюда уже в 3 раз ? port.open(/dev/ttyUSB0, fstream::in | fstream::app); Заслав #echo -e 'AT+CUSD=1,*102#,15\r\n' /dev/ttyUSB2 я получил от #cat /dev/ttyUSB2 строчку в юникоде. Между тем, как я понял программа balans.c (прилагаю) посылает запрос на /dev/ttyUSB0 Как ее поправить, чтобы она посылала и прослушивала /dev/ttyUSB2 ? Догадаешься сам как ее поправить ? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
Dmitriy Sirant пишет: 05.07.2009 15:03, Ivan Petrov пишет: Наконец-то догадался проверить :- Оказалось мой билайн-модем проверяет баланс посылая команду не на /dev/ttyUSB0, а на /dev/ttyUSB2 Ну если ты такой догадливый, то почему вместо того тобы прочитать текст программы хотябы 1 раз ты его постишь сюда уже в 3 раз ? port.open(/dev/ttyUSB0, fstream::in | fstream::app); Заслав #echo -e 'AT+CUSD=1,*102#,15\r\n' /dev/ttyUSB2 я получил от #cat /dev/ttyUSB2 строчку в юникоде. Между тем, как я понял программа balans.c (прилагаю) посылает запрос на /dev/ttyUSB0 Как ее поправить, чтобы она посылала и прослушивала /dev/ttyUSB2 ? Догадаешься сам как ее поправить ? Дело в том, что так я ее правил еще вчера. Перекомпилировал - толку - 0 И.П. З.Ы. Может мне просто подкажете тогда как набор юникодных символов можно переконвертировать - не худой конец - сойдет -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
On Sun, 05 Jul 2009 19:03:30 +0700 Ivan Petrov pr...@hnet.ru wrote: Наконец-то догадался проверить :- Оказалось мой билайн-модем проверяет баланс посылая команду не на /dev/ttyUSB0, а на /dev/ttyUSB2 Заслав #echo -e 'AT+CUSD=1,*102#,15\r\n' /dev/ttyUSB2 я получил от #cat /dev/ttyUSB2 строчку в юникоде. Между тем, как я понял программа balans.c (прилагаю) посылает запрос на /dev/ttyUSB0 Как ее поправить, чтобы она посылала и прослушивала /dev/ttyUSB2 ? Найти port.open(/dev/ttyUSB0 заменить 0 - 2 пересобрать? -- Best Regards, Yuri Kozlov -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
On Sun, 05 Jul 2009 19:15:38 +0700 Ivan Petrov pr...@hnet.ru wrote: Dmitriy Sirant пишет: 05.07.2009 15:03, Ivan Petrov пишет: Наконец-то догадался проверить :- Оказалось мой билайн-модем проверяет баланс посылая команду не на /dev/ttyUSB0, а на /dev/ttyUSB2 Ну если ты такой догадливый, то почему вместо того тобы прочитать текст программы хотябы 1 раз ты его постишь сюда уже в 3 раз ? port.open(/dev/ttyUSB0, fstream::in | fstream::app); Заслав #echo -e 'AT+CUSD=1,*102#,15\r\n' /dev/ttyUSB2 я получил от #cat /dev/ttyUSB2 строчку в юникоде. Между тем, как я понял программа balans.c (прилагаю) посылает запрос на /dev/ttyUSB0 Как ее поправить, чтобы она посылала и прослушивала /dev/ttyUSB2 ? Догадаешься сам как ее поправить ? Дело в том, что так я ее правил еще вчера. Перекомпилировал - толку - 0 И.П. З.Ы. Может мне просто подкажете тогда как набор юникодных символов можно переконвертировать - не худой конец - сойдет Для переконвертирования символов юникод используй программу tcs (character set translator). tcs translates character sets from one encoding to another. Supported encodings include utf (ISO utf-8), ascii, ISO 8859-[123456789], koi8, jis-kanji, ujis, ms-kanji, jis, gb, big5, unicode, tis, msdos, and atari. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
Yuri Kozlov пишет: Найти port.open(/dev/ttyUSB0 заменить 0 - 2 пересобрать? не помогло -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
On Sun, 05 Jul 2009 19:34:09 +0700 Ivan Petrov pr...@hnet.ru wrote: Yuri Kozlov пишет: Найти port.open(/dev/ttyUSB0 заменить 0 - 2 пересобрать? не помогло if( (dev-descriptor.idVendor==6610) ( dev-descriptor.idProduct==49) ) У устройства такие производитель и продукт? -- Best Regards, Yuri Kozlov -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
Yuri Kozlov пишет: On Sun, 05 Jul 2009 19:34:09 +0700 Ivan Petrov pr...@hnet.ru wrote: Yuri Kozlov пишет: Найти port.open(/dev/ttyUSB0 заменить 0 - 2 пересобрать? не помогло if( (dev-descriptor.idVendor==6610) ( dev-descriptor.idProduct==49) ) Это в исходник подставить? У устройства такие производитель и продукт? USB\VID_19D2PID_0016 И.П. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
sms пишет: tcs translates character sets from one encoding to another. Supported encodings include utf (ISO utf-8), ascii, ISO 8859-[123456789], koi8, jis-kanji, ujis, ms-kanji, jis, gb, big5, unicode, tis, msdos, and atari. вроде тут нет нужного: нашел в интернете: - А вообще, данная кодировка, оказывается, поддерживается iconv, так что всё должно быть просто. Короче говоря, я добился результата. В ответ на команду AT+CUSD=1,*102#,15 модем ответил: +CUSD: 0,04110430043B0430043D0441002000340033002E003900310440002E002004220440043004440438043A0020003 0002E00300020041A0431002E0414043504420430043B0438003A002000680074007400700073003A002F002F00750073006C 007500670069002E006200650065006C0069006E0065002E00720075,72 Затем я прочитал данную строку в кавычках sscanf-ом по формату 04X, и записал в двоичном виде в файл tmp.txt. После этого команда: cat tmp.txt | iconv -f UCS-2 -t utf-8 выдала следующее: Баланс 43.91р. Трафик 0.0 кБ. Детали: https://uslugi.beeline.ru - sscanf в репозитории не нашел и вообще запутался... И.П. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: еще раз баланс
On Sun, Jul 05, 2009 at 08:45:05PM +0700, Ivan Petrov wrote: if( (dev-descriptor.idVendor==6610) ( dev-descriptor.idProduct==49) ) Это в исходник подставить? У устройства такие производитель и продукт? USB\VID_19D2PID_0016 Соответственно: if( (dev-descriptor.idVendor==0x19d2) ( dev-descriptor.idProduct==0x0016) ) -- WBR, Dmitry http://dion.org.ua/2009/06/10/new-pgp-key/ signature.asc Description: Digital signature
Re: еще раз баланс
Dmitry Nezhevenko пишет: On Sun, Jul 05, 2009 at 08:45:05PM +0700, Ivan Petrov wrote: if( (dev-descriptor.idVendor==6610) ( dev-descriptor.idProduct==49) ) Это в исходник подставить? У устройства такие производитель и продукт? USB\VID_19D2PID_0016 Соответственно: if( (dev-descriptor.idVendor==0x19d2) ( dev-descriptor.idProduct==0x0016) ) Спасибо! прога чуть задвигалась. пишет -16 Device or resource is busy (модем не в интернете). Что-то еще поправить? И.П. #include usb.h #include unistd.h #include iostream #include string.h #include errno.h #include iconv.h #include langinfo.h #include locale #include string #include fstream using namespace std; // ÐоÑÐµÐ¼Ñ Ð½Ðµ ÑделаÑÑ Ñак: // //int SendToDevice( char* bi, int len, usb_dev_handle *udev) //{ //int rc; //rc = usb_bulk_write(udev, 2, bi, len, 200); // //if (rc 0) { //rc=0; //coutendlrc:strerror(errno)endl; //} else coutin :bi len: rcendl; //coutrcendl; //return rc; //} // вÑзÑваÑÑ Ñак: // len=SendToDevice(initcom1, sizeof(initcom1)-1, udev); // РвообÑе C++ здеÑÑ Ð¸Ð·Ð»Ð¸ÑеÑÑво, можно обойÑиÑÑ ANSI C и даже chat(8) script. void SendToDevice( char* bi, int len, usb_dev_handle *udev) { int t; t=usb_bulk_write(udev, 2, bi, len, 200); if(t0)len=0; else len=t; if (t0) coutendlt:strerror(errno)endl;else coutin :bi len: tendl; //couttendl; } int main(void) { struct usb_bus *bus=NULL; struct usb_device *dev=NULL; usb_dev_handle *udev=NULL; char com[]=AT+CUSD=1,*102#,15\r\n; char initcom0[]=AT+ZOPERTE=\beeline\\r\n; char initcom1[]=AT+ZOPRT=5\r\n; char initcom2[]=AT+ZSTART\r\n; char initcom3[]=AT+CPBS=\SM\\r\n; char initcom4[]=AT+CPMS=\SM\,\SM\,\\\r\n; //char ans[512]={0}; char buf[512]={0}; int lenc,lenc1,len,i,j=0,t; fstream port; string ans; usb_init(); usb_find_busses(); usb_find_devices(); //find device and open handle for (bus = usb_busses; bus; bus = bus-next) for (dev = bus-devices; dev; dev = dev-next) if( (dev-descriptor.idVendor==0x19d2) ( dev-descriptor.idProduct==0x0016) ) { udev = usb_open(dev); } if(udev==0)return -1; usb_claim_interface(udev, 1); usb_set_altinterface(udev, 1); usb_resetep(udev, 2); lenc=0;while(com[lenc]!=0)lenc++; lenc1=0;while(initcom0[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom0, len, udev); lenc1=0;while(initcom1[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom1, len, udev); sleep(5); lenc1=0;while(initcom0[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom0, len, udev); lenc1=0;while(initcom2[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom2, len, udev); lenc1=0;while(initcom3[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom3, len, udev); lenc1=0;while(initcom4[lenc1]!=0)lenc1++;len=lenc1; SendToDevice(initcom4, len, udev); sleep(10); len=lenc; SendToDevice(com, len, udev); if (len!=lenc) { if(udev)usb_close(udev); return -1; } sleep(5); port.open(/dev/ttyUSB2, fstream::in | fstream::app); portans; coutans: ansendl; while( ans[0]!='0' || ans[1]!=',' || ans[2]!='\') {
Re: еще раз баланс
On Mon, Jul 06, 2009 at 12:06:49AM +0700, Ivan Petrov wrote: Соответственно: if( (dev-descriptor.idVendor==0x19d2) ( dev-descriptor.idProduct==0x0016) ) Спасибо! прога чуть задвигалась. пишет -16 Device or resource is busy (модем не в интернете). Что-то еще поправить? Код проги особо не смотрел и конкретно про девайс не в курсе, но USB-девайс, к которому загружен ядерный драйвер (в случае мопеда -- cdc-acm или usbserial) через libusb работать не будет. Так как баланс можно узнать из /dev/ttyUSBX, IMHO весь libusb-ный код нужно оттуда выкинуть и писать сразу в /dev/ttyUSBX. -- WBR, Dmitry http://dion.org.ua/2009/06/10/new-pgp-key/ signature.asc Description: Digital signature