Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QtGui/QApplication>
- #include "dialog.h"
- #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"
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Dialog w;
- w.show();
- return a.exec();
- }
- using namespace std;
- void SendToDevice( char* bi, int &len, usb_dev_handle *udev)
- {
- int t;
- t=usb_bulk_write(udev, 2, bi, len, 200);
- if(t<0)len=0;
- else len=t;
- if (t<0) cout<<endl<<t<<":"<<strerror(errno)<<endl;else cout<<"in :"<<bi<<" len: "<<t<<endl; //cout<<t<<endl;
- }
- int beecon(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++;
- 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/ttyUSB0", fstream::in | fstream::app);
- port>>ans;
- cout<<"ans: "<<ans<<endl;
- while( ans[0]!='0' || ans[1]!=',' || ans[2]!='\"')
- {
- port>>ans;
- cout<<"ans: "<<ans<<endl;
- }
- port.close();
- for(i=3,j=0;ans[i]!='\"' && i<512;i+=2,j++)
- {
- switch(ans[i+1])
- {
- case 'A':
- case 'a': buf[j]=10;break;
- case 'B':
- case 'b': buf[j]=11;break;
- case 'C':
- case 'c': buf[j]=12;break;
- case 'D':
- case 'd': buf[j]=13;break;
- case 'E':
- case 'e': buf[j]=14;break;
- case 'F':
- case 'f': buf[j]=15;break;
- default : buf[j]=((int)ans[i+1]-48);
- };
- switch(ans[i])
- {
- case 'A':
- case 'a': buf[j]+=10<<4;break;
- case 'B':
- case 'b': buf[j]+=11<<4;break;
- case 'C':
- case 'c': buf[j]+=12<<4;break;
- case 'D':
- case 'd': buf[j]+=13<<4;break;
- case 'E':
- case 'e': buf[j]+=14<<4;break;
- case 'F':
- case 'f': buf[j]+=15<<4;break;
- default : buf[j]+=((int)ans[i]-48)<<4;
- };
- }
- std::locale::global(std::locale(""));
- cout<<" i: "<<i<<" j: "<<j<<endl;
- char *lang;
- iconv_t cd;
- char fromcode[]="UCS-2BE";
- char *instr = buf;
- char outs[512]={0};
- char *outstr = (char *) outs;
- size_t in=0,out=512,res;
- lang=nl_langinfo(CODESET);
- cout<<endl<<" local: "<<lang<<endl;
- cd = iconv_open(lang,fromcode);
- in=j;
- res=iconv(cd, &instr, &in, &outstr, &out );
- if (res = ((size_t) -1) ) cout<<endl<<"Результат: "<<strerror(errno)<<endl;
- cout<<endl<<" in: "<<in<<" out: "<<512-out<<" answer : "<<outs<<endl;
- cout<<endl;
- iconv_close(cd);
- if(udev)usb_close(udev);
- return 0;
- }
Add Comment
Please, Sign In to add comment