- Timestamp:
- Dec 27, 2008, 12:40:39 PM (16 years ago)
- Location:
- trunk/BNC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bncgetthread.cpp
r1345 r1346 301 301 } 302 302 303 #define AGENTVERSION "1.7"304 // Connect to Caster, send the Request (static)305 ////////////////////////////////////////////////////////////////////////////306 bncSocket* bncGetThread::request(const QUrl& mountPoint,307 QByteArray& latitude, QByteArray& longitude,308 QByteArray& nmea, int timeOut,309 QString& msg) {310 311 // Connect the Socket312 // ------------------313 QSettings settings;314 QString proxyHost = settings.value("proxyHost").toString();315 int proxyPort = settings.value("proxyPort").toInt();316 317 bncSocket* socket = new bncSocket(new QTcpSocket());318 if ( proxyHost.isEmpty() ) {319 socket->connectToHost(mountPoint.host(), mountPoint.port());320 }321 else {322 socket->connectToHost(proxyHost, proxyPort);323 }324 if (!socket->waitForConnected(timeOut)) {325 msg += "Connect timeout\n";326 delete socket;327 return 0;328 }329 330 // Send Request331 // ------------332 QString uName = QUrl::fromPercentEncoding(mountPoint.userName().toAscii());333 QString passW = QUrl::fromPercentEncoding(mountPoint.password().toAscii());334 QByteArray userAndPwd;335 336 if(!uName.isEmpty() || !passW.isEmpty())337 {338 userAndPwd = "Authorization: Basic " + (uName.toAscii() + ":" +339 passW.toAscii()).toBase64() + "\r\n";340 }341 342 QUrl hlp;343 hlp.setScheme("http");344 hlp.setHost(mountPoint.host());345 hlp.setPort(mountPoint.port());346 hlp.setPath(mountPoint.path());347 348 QByteArray reqStr;349 if ( proxyHost.isEmpty() ) {350 if (hlp.path().indexOf("/") != 0) hlp.setPath("/");351 reqStr = "GET " + hlp.path().toAscii() + " HTTP/1.0\r\n"352 + "User-Agent: NTRIP BNC/" AGENTVERSION "\r\n"353 + userAndPwd + "\r\n";354 } else {355 reqStr = "GET " + hlp.toEncoded() + " HTTP/1.0\r\n"356 + "User-Agent: NTRIP BNC/" AGENTVERSION "\r\n"357 + "Host: " + hlp.host().toAscii() + "\r\n"358 + userAndPwd + "\r\n";359 }360 361 // NMEA string to handle VRS stream362 // --------------------------------363 double lat, lon;364 365 lat = strtod(latitude,NULL);366 lon = strtod(longitude,NULL);367 368 if ((nmea == "yes") && (hlp.path().length() > 2) && (hlp.path().indexOf(".skl") < 0)) {369 const char* flagN="N";370 const char* flagE="E";371 if (lon >180.) {lon=(lon-360.)*(-1.); flagE="W";}372 if ((lon < 0.) && (lon >= -180.)) {lon=lon*(-1.); flagE="W";}373 if (lon < -180.) {lon=(lon+360.); flagE="E";}374 if (lat < 0.) {lat=lat*(-1.); flagN="S";}375 QTime ttime(QDateTime::currentDateTime().toUTC().time());376 int lat_deg = (int)lat;377 double lat_min=(lat-lat_deg)*60.;378 int lon_deg = (int)lon;379 double lon_min=(lon-lon_deg)*60.;380 int hh = 0 , mm = 0;381 double ss = 0.0;382 hh=ttime.hour();383 mm=ttime.minute();384 ss=(double)ttime.second()+0.001*ttime.msec();385 QString gga;386 gga += "GPGGA,";387 gga += QString("%1%2%3,").arg((int)hh, 2, 10, QLatin1Char('0')).arg((int)mm, 2, 10, QLatin1Char('0')).arg((int)ss, 2, 10, QLatin1Char('0'));388 gga += QString("%1%2,").arg((int)lat_deg,2, 10, QLatin1Char('0')).arg(lat_min, 7, 'f', 4, QLatin1Char('0'));389 gga += flagN;390 gga += QString(",%1%2,").arg((int)lon_deg,3, 10, QLatin1Char('0')).arg(lon_min, 7, 'f', 4, QLatin1Char('0'));391 gga += flagE + QString(",1,05,1.00,+00100,M,10.000,M,,");392 int xori;393 char XOR = 0;394 char *Buff =gga.toAscii().data();395 int iLen = strlen(Buff);396 for (xori = 0; xori < iLen; xori++) {397 XOR ^= (char)Buff[xori];398 }399 gga += QString("*%1").arg(XOR, 2, 16, QLatin1Char('0'));400 reqStr += "$";401 reqStr += gga;402 reqStr += "\r\n";403 }404 405 msg += reqStr;406 407 socket->write(reqStr, reqStr.length());408 409 if (!socket->waitForBytesWritten(timeOut)) {410 msg += "Write timeout\n";411 delete socket;412 return 0;413 }414 415 return socket;416 }417 418 303 // Init Run 419 304 //////////////////////////////////////////////////////////////////////////// … … 425 310 // ----------------- 426 311 QString msg; 427 _socket = this->request(_mountPoint, _latitude, _longitude,428 _nmea, _timeOut, msg);312 _socket = bncSocket::request(_mountPoint, _latitude, _longitude, 313 _nmea, _timeOut, msg); 429 314 if (!_socket) { 430 315 return failure; -
trunk/BNC/bncgetthread.h
r1345 r1346 51 51 52 52 ~bncGetThread(); 53 54 static bncSocket* request(const QUrl& mountPoint, QByteArray& latitude, QByteArray& longitude,55 QByteArray& nmea, int timeOut, QString& msg);56 53 57 54 QByteArray staID() const {return _staID;} -
trunk/BNC/bncrinex.cpp
r1345 r1346 157 157 QByteArray _longitude; 158 158 QByteArray _nmea; 159 bncSocket* socket = bnc GetThread::request(url, _latitude, _longitude, _nmea, timeOut, msg);159 bncSocket* socket = bncSocket::request(url, _latitude, _longitude, _nmea, timeOut, msg); 160 160 161 161 if (socket) { -
trunk/BNC/bncsocket.cpp
r1345 r1346 22 22 using namespace std; 23 23 24 #define BNCVERSION "1.7" 25 24 26 // Constructor 25 27 //////////////////////////////////////////////////////////////////////////// … … 99 101 return _socket->waitForBytesWritten(msecs); 100 102 } 103 104 // Connect to Caster, send the Request (static) 105 //////////////////////////////////////////////////////////////////////////// 106 bncSocket* bncSocket::request(const QUrl& mountPoint, 107 QByteArray& latitude, QByteArray& longitude, 108 QByteArray& nmea, int timeOut, 109 QString& msg) { 110 111 // Connect the Socket 112 // ------------------ 113 QSettings settings; 114 QString proxyHost = settings.value("proxyHost").toString(); 115 int proxyPort = settings.value("proxyPort").toInt(); 116 117 bncSocket* socket = new bncSocket(new QTcpSocket()); 118 if ( proxyHost.isEmpty() ) { 119 socket->connectToHost(mountPoint.host(), mountPoint.port()); 120 } 121 else { 122 socket->connectToHost(proxyHost, proxyPort); 123 } 124 if (!socket->waitForConnected(timeOut)) { 125 msg += "Connect timeout\n"; 126 delete socket; 127 return 0; 128 } 129 130 // Send Request 131 // ------------ 132 QString uName = QUrl::fromPercentEncoding(mountPoint.userName().toAscii()); 133 QString passW = QUrl::fromPercentEncoding(mountPoint.password().toAscii()); 134 QByteArray userAndPwd; 135 136 if(!uName.isEmpty() || !passW.isEmpty()) 137 { 138 userAndPwd = "Authorization: Basic " + (uName.toAscii() + ":" + 139 passW.toAscii()).toBase64() + "\r\n"; 140 } 141 142 QUrl hlp; 143 hlp.setScheme("http"); 144 hlp.setHost(mountPoint.host()); 145 hlp.setPort(mountPoint.port()); 146 hlp.setPath(mountPoint.path()); 147 148 QByteArray reqStr; 149 if ( proxyHost.isEmpty() ) { 150 if (hlp.path().indexOf("/") != 0) hlp.setPath("/"); 151 reqStr = "GET " + hlp.path().toAscii() + " HTTP/1.0\r\n" 152 + "User-Agent: NTRIP BNC/" BNCVERSION "\r\n" 153 + userAndPwd + "\r\n"; 154 } else { 155 reqStr = "GET " + hlp.toEncoded() + " HTTP/1.0\r\n" 156 + "User-Agent: NTRIP BNC/" BNCVERSION "\r\n" 157 + "Host: " + hlp.host().toAscii() + "\r\n" 158 + userAndPwd + "\r\n"; 159 } 160 161 // NMEA string to handle VRS stream 162 // -------------------------------- 163 double lat, lon; 164 165 lat = strtod(latitude,NULL); 166 lon = strtod(longitude,NULL); 167 168 if ((nmea == "yes") && (hlp.path().length() > 2) && (hlp.path().indexOf(".skl") < 0)) { 169 const char* flagN="N"; 170 const char* flagE="E"; 171 if (lon >180.) {lon=(lon-360.)*(-1.); flagE="W";} 172 if ((lon < 0.) && (lon >= -180.)) {lon=lon*(-1.); flagE="W";} 173 if (lon < -180.) {lon=(lon+360.); flagE="E";} 174 if (lat < 0.) {lat=lat*(-1.); flagN="S";} 175 QTime ttime(QDateTime::currentDateTime().toUTC().time()); 176 int lat_deg = (int)lat; 177 double lat_min=(lat-lat_deg)*60.; 178 int lon_deg = (int)lon; 179 double lon_min=(lon-lon_deg)*60.; 180 int hh = 0 , mm = 0; 181 double ss = 0.0; 182 hh=ttime.hour(); 183 mm=ttime.minute(); 184 ss=(double)ttime.second()+0.001*ttime.msec(); 185 QString gga; 186 gga += "GPGGA,"; 187 gga += QString("%1%2%3,").arg((int)hh, 2, 10, QLatin1Char('0')).arg((int)mm, 2, 10, QLatin1Char('0')).arg((int)ss, 2, 10, QLatin1Char('0')); 188 gga += QString("%1%2,").arg((int)lat_deg,2, 10, QLatin1Char('0')).arg(lat_min, 7, 'f', 4, QLatin1Char('0')); 189 gga += flagN; 190 gga += QString(",%1%2,").arg((int)lon_deg,3, 10, QLatin1Char('0')).arg(lon_min, 7, 'f', 4, QLatin1Char('0')); 191 gga += flagE + QString(",1,05,1.00,+00100,M,10.000,M,,"); 192 int xori; 193 char XOR = 0; 194 char *Buff =gga.toAscii().data(); 195 int iLen = strlen(Buff); 196 for (xori = 0; xori < iLen; xori++) { 197 XOR ^= (char)Buff[xori]; 198 } 199 gga += QString("*%1").arg(XOR, 2, 16, QLatin1Char('0')); 200 reqStr += "$"; 201 reqStr += gga; 202 reqStr += "\r\n"; 203 } 204 205 msg += reqStr; 206 207 socket->write(reqStr, reqStr.length()); 208 209 if (!socket->waitForBytesWritten(timeOut)) { 210 msg += "Write timeout\n"; 211 delete socket; 212 return 0; 213 } 214 215 return socket; 216 } 217 -
trunk/BNC/bncsocket.h
r1345 r1346 23 23 QAbstractSocket::SocketState state() const; 24 24 25 static bncSocket* request(const QUrl& mountPoint, QByteArray& latitude, 26 QByteArray& longitude, QByteArray& nmea, 27 int timeOut, QString& msg); 28 29 25 30 private: 26 31 QTcpSocket* _socket; -
trunk/BNC/bnctabledlg.cpp
r1345 r1346 163 163 QByteArray _longitude; 164 164 QByteArray _nmea; 165 bncSocket* socket = bnc GetThread::request(url, _latitude, _longitude, _nmea, timeOut, msg);165 bncSocket* socket = bncSocket::request(url, _latitude, _longitude, _nmea, timeOut, msg); 166 166 167 167 if (!socket) { -
trunk/BNC/serial/posix_qextserialport.cpp
r1317 r1346 822 822 /*open the port*/ 823 823 Posix_File->setFileName(port); 824 qDebug("Trying to open File");824 //// qDebug("Trying to open File"); 825 825 if (Posix_File->open(QIODevice::ReadWrite|QIODevice::Unbuffered)) { 826 qDebug("Opened File succesfully");826 /// qDebug("Opened File succesfully"); 827 827 /*set open mode*/ 828 828 QIODevice::open(mode);
Note:
See TracChangeset
for help on using the changeset viewer.