interfaceserver.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "interfaceserver.h"
  2. #include "smartlightshm.h"
  3. InterfaceServer::InterfaceServer(QObject *parent) : QTcpServer(parent)
  4. {
  5. threadList.clear();
  6. }
  7. void InterfaceServer::start()
  8. {
  9. if(!this->listen(QHostAddress::Any,55010)){
  10. exit(-1);
  11. }
  12. }
  13. void InterfaceServer::closeThread()
  14. {
  15. InterfaceThread *pThread = static_cast<InterfaceThread *>(sender());
  16. if(pThread){
  17. QList<InterfaceThread *>::iterator i;
  18. for(i=threadList.begin();i!=threadList.end();i++){
  19. InterfaceThread *thread = *i;
  20. emit SetCommData("0008",1,QString("close thread:%1").arg(thread->cmdID()));
  21. if(thread==pThread){
  22. threadList.removeAll(thread);
  23. pThread->deleteLater();
  24. break;
  25. }
  26. }
  27. }
  28. }
  29. void InterfaceServer::incomingConnection(qintptr socketDescriptor)
  30. {
  31. InterfaceThread *thread = new InterfaceThread(socketDescriptor,this);
  32. connect(thread,&InterfaceThread::finished,this,&InterfaceServer::closeThread);
  33. connect(thread,&InterfaceThread::resetRequest,this,&InterfaceServer::resetRequest);
  34. connect(thread,&InterfaceThread::requestRealTimeData,this,&InterfaceServer::requestRealTimeData);
  35. connect(thread,&InterfaceThread::requestSetParameters,this,&InterfaceServer::requestSetParameters);
  36. connect(thread,&InterfaceThread::CommData,this,&InterfaceServer::CommData);
  37. threadList.append(thread);
  38. //来自平台的数据信号
  39. thread->start();
  40. }
  41. void InterfaceServer::setEchoString(QString CommId, QString EchoString)
  42. {
  43. emit SetCommData(CommId, 1, "EchoString");
  44. QList<InterfaceThread *>::iterator i;
  45. for(i=threadList.begin();i!=threadList.end();i++){
  46. InterfaceThread *thread = *i;
  47. emit SetCommData(CommId,1,QString("check thread:%1").arg(thread->cmdID()));
  48. // if(thread->chkCmdID(CommId)){
  49. thread->setEchoString(EchoString);
  50. break;
  51. // }
  52. }
  53. }
  54. void InterfaceServer::resetRequest(QString deviceID, int commandType, int parameterType, int pseq){
  55. emit SetResetRequest(deviceID,commandType,parameterType,pseq);
  56. }
  57. void InterfaceServer::requestRealTimeData(QString deviceID, int commandType, int parameterType, int pn, int queryNumber, int startPoint)
  58. {
  59. emit SetRequestRealTimeData(deviceID, commandType, parameterType, pn, queryNumber, startPoint);
  60. }
  61. void InterfaceServer::requestSetParameters(QString deviceID, int commandType, int parameterType, QString tmp)
  62. {
  63. emit SetRequestSetParameters(deviceID, commandType, parameterType, tmp);
  64. }
  65. void InterfaceServer::CommData(QString deviceID, int dir, QString data)
  66. {
  67. emit SetCommData(deviceID, dir, data);
  68. }