Guest User

Untitled

a guest
Jan 21st, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. #include <QtGui/QApplication>
  2. #include "dialog.h"
  3. #include "usb.h"
  4. #include "unistd.h"
  5. #include "iostream"
  6. #include "string.h"
  7. #include "errno.h"
  8. #include "iconv.h"
  9. #include "langinfo.h"
  10. #include "locale"
  11. #include "string"
  12. #include "fstream"
  13.  
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17. QApplication a(argc, argv);
  18. Dialog w;
  19. w.show();
  20. return a.exec();
  21. }
  22.  
  23. using namespace std;
  24.  
  25. void SendToDevice( char* bi, int &len, usb_dev_handle *udev)
  26. {
  27. int t;
  28. t=usb_bulk_write(udev, 2, bi, len, 200);
  29.  
  30. if(t<0)len=0;
  31. else len=t;
  32. if (t<0) cout<<endl<<t<<":"<<strerror(errno)<<endl;else cout<<"in :"<<bi<<" len: "<<t<<endl; //cout<<t<<endl;
  33. }
  34.  
  35. int beecon(void)
  36. {
  37. struct usb_bus *bus=NULL;
  38. struct usb_device *dev=NULL;
  39. usb_dev_handle *udev=NULL;
  40.  
  41. char com[]="AT+CUSD=1,*102#,15\r\n";
  42. char initcom0[]="AT+ZOPERTE=\"beeline\"\r\n";
  43. char initcom1[]="AT+ZOPRT=5\r\n";
  44. char initcom2[]="AT+ZSTART\r\n";
  45. char initcom3[]="AT+CPBS=\"SM\"\r\n";
  46. char initcom4[]="AT+CPMS=\"SM\",\"SM\",\"\"\r\n";
  47. //char ans[512]={0};
  48. char buf[512]={0};
  49. int lenc,lenc1,len,i,j=0,t;
  50. fstream port;
  51. string ans;
  52.  
  53. usb_init();
  54. usb_find_busses();
  55. usb_find_devices();
  56.  
  57. //find device and open handle
  58. for (bus = usb_busses; bus; bus = bus->next)
  59. for (dev = bus->devices; dev; dev = dev->next)
  60. if( (dev->descriptor.idVendor==6610) && ( dev->descriptor.idProduct==49) )
  61. {
  62. udev = usb_open(dev);
  63. }
  64.  
  65. if(udev==0)return -1;
  66.  
  67. usb_claim_interface(udev, 1);
  68. usb_set_altinterface(udev, 1);
  69. usb_resetep(udev, 2);
  70.  
  71. lenc=0;while(com[lenc]!=0)lenc++;
  72.  
  73. lenc1=0;while(initcom0[lenc1]!=0)lenc1++;len=lenc1;
  74. SendToDevice(initcom0, len, udev);
  75. lenc1=0;while(initcom1[lenc1]!=0)lenc1++;len=lenc1;
  76. SendToDevice(initcom1, len, udev);
  77. sleep(5);
  78. lenc1=0;while(initcom0[lenc1]!=0)lenc1++;len=lenc1;
  79. SendToDevice(initcom0, len, udev);
  80. lenc1=0;while(initcom2[lenc1]!=0)lenc1++;len=lenc1;
  81. SendToDevice(initcom2, len, udev);
  82. lenc1=0;while(initcom3[lenc1]!=0)lenc1++;len=lenc1;
  83. SendToDevice(initcom3, len, udev);
  84. lenc1=0;while(initcom4[lenc1]!=0)lenc1++;len=lenc1;
  85. SendToDevice(initcom4, len, udev);
  86. sleep(10);
  87.  
  88.  
  89. len=lenc;
  90. SendToDevice(com, len, udev);
  91. if (len!=lenc)
  92. {
  93. if(udev)usb_close(udev);
  94. return -1;
  95. }
  96.  
  97. sleep(5);
  98.  
  99. port.open("/dev/ttyUSB0", fstream::in | fstream::app);
  100.  
  101. port>>ans;
  102. cout<<"ans: "<<ans<<endl;
  103.  
  104. while( ans[0]!='0' || ans[1]!=',' || ans[2]!='\"')
  105. {
  106. port>>ans;
  107. cout<<"ans: "<<ans<<endl;
  108. }
  109.  
  110. port.close();
  111.  
  112. for(i=3,j=0;ans[i]!='\"' && i<512;i+=2,j++)
  113. {
  114. switch(ans[i+1])
  115. {
  116. case 'A':
  117. case 'a': buf[j]=10;break;
  118.  
  119. case 'B':
  120. case 'b': buf[j]=11;break;
  121.  
  122. case 'C':
  123. case 'c': buf[j]=12;break;
  124.  
  125. case 'D':
  126. case 'd': buf[j]=13;break;
  127.  
  128. case 'E':
  129. case 'e': buf[j]=14;break;
  130.  
  131. case 'F':
  132. case 'f': buf[j]=15;break;
  133.  
  134. default : buf[j]=((int)ans[i+1]-48);
  135. };
  136. switch(ans[i])
  137. {
  138. case 'A':
  139. case 'a': buf[j]+=10<<4;break;
  140.  
  141. case 'B':
  142. case 'b': buf[j]+=11<<4;break;
  143.  
  144. case 'C':
  145. case 'c': buf[j]+=12<<4;break;
  146.  
  147. case 'D':
  148. case 'd': buf[j]+=13<<4;break;
  149.  
  150. case 'E':
  151. case 'e': buf[j]+=14<<4;break;
  152.  
  153. case 'F':
  154. case 'f': buf[j]+=15<<4;break;
  155.  
  156. default : buf[j]+=((int)ans[i]-48)<<4;
  157. };
  158. }
  159.  
  160. std::locale::global(std::locale(""));
  161.  
  162.  
  163. cout<<" i: "<<i<<" j: "<<j<<endl;
  164.  
  165.  
  166. char *lang;
  167. iconv_t cd;
  168. char fromcode[]="UCS-2BE";
  169. char *instr = buf;
  170. char outs[512]={0};
  171. char *outstr = (char *) outs;
  172. size_t in=0,out=512,res;
  173.  
  174.  
  175. lang=nl_langinfo(CODESET);
  176. cout<<endl<<" local: "<<lang<<endl;
  177.  
  178. cd = iconv_open(lang,fromcode);
  179.  
  180. in=j;
  181. res=iconv(cd, &instr, &in, &outstr, &out );
  182.  
  183. if (res = ((size_t) -1) ) cout<<endl<<"&#1056;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;: "<<strerror(errno)<<endl;
  184. cout<<endl<<" in: "<<in<<" out: "<<512-out<<" answer : "<<outs<<endl;
  185.  
  186. cout<<endl;
  187.  
  188.  
  189. iconv_close(cd);
  190. if(udev)usb_close(udev);
  191.  
  192. return 0;
  193. }
Add Comment
Please, Sign In to add comment