int closeArduino() { RUNLOG("#### arduino.js # start closeArduino...\n"); SetCommMask(handle, EV_RXCHAR); PurgeComm(handle, PURGE_RXCLEAR); CloseHandle(handle); RUNLOG("#### arduino.js # return closeArduino...\n"); return 0; }
int pulse(int pin, int ontime, int offtime, char** error) { RUNLOG("#### arduino.js # start pulse...\n"); char command[24]; sprintf(command, "P%d,%d,%d\r", pin, ontime, offtime); RUNLOG(command); char response[BUFFER_SIZE]; memset(response , '\0' , sizeof(response)); int result = invoke(command, response, error); // NSLog(@"analogRead:"); // NSLog(@"[%s]", response); RUNLOG("#### arduino.js # return pulse...\n"); return result; }
int openArduino(char* portname, char** error) { RUNLOG("#### arduino.js # start openArduino...\n"); DCB dcb = {0}; COMMTIMEOUTS timeout; if(handle != NULL){ closeArduino(); } handle = CreateFile(portname , GENERIC_READ | GENERIC_WRITE , 0 , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL ); if(handle == INVALID_HANDLE_VALUE){ return -1; } GetCommState(handle, &dcb); dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; timeout.ReadIntervalTimeout = 10; timeout.ReadTotalTimeoutMultiplier = 1; timeout.ReadTotalTimeoutConstant = 10; timeout.WriteTotalTimeoutMultiplier = 1; timeout.WriteTotalTimeoutConstant = 10; if(SetCommState(handle, &dcb) == FALSE){ return -1; } if(SetCommTimeouts(handle, &timeout) == FALSE){ return -1; } Sleep(2000); //wait until Arduino finish the setup char buffer[BUFFER_SIZE]; memset(buffer , '\0' , sizeof(buffer)); response(buffer); RUNLOG("#### arduino.js # return openArduino...\n"); return 0; }
int delayMicroseconds(int value, char** error) { RUNLOG("#### arduino.js # start delayMicroseconds...\n"); char command[16]; sprintf(command, "w%d\r", value); RUNLOG(command); char response[BUFFER_SIZE]; memset(response , '\0' , sizeof(response)); int result = invoke(command, response, error); // NSLog(@"delayMicroseconds:"); // NSLog(@"[%s]", response); RUNLOG("#### arduino.js # return delayMicroseconds...\n"); return result; }
int pinMode(int pin, bool isOutput, char** error) { RUNLOG("#### arduino.js # start pinMode...\n"); char command[16]; sprintf(command, "p%d,%d\r", pin, isOutput == true ? 0 : 1); RUNLOG(command); char response[BUFFER_SIZE]; memset(response , '\0' , sizeof(response)); int result = invoke(command, response, error); // NSLog(@"pinMode:"); // NSLog(@"[%s]", response); RUNLOG("#### arduino.js # return pinMode...\n"); return result; }
int analogWrite(int pin, int value, char** error) { RUNLOG("#### arduino.js # start analogWrite...\n"); char command[16]; sprintf(command, "a%d,%d\r", pin, value); RUNLOG(command); char response[BUFFER_SIZE]; memset(response , '\0' , sizeof(response)); int result = invoke(command, response, error); // NSLog(@"analoglWrite:"); // NSLog(@"[%s]", response); RUNLOG("#### arduino.js # return analogWrite...\n"); return result; }
int analogRead(int pin, int* valuePointer, char** error) { RUNLOG("#### arduino.js # start analogRead...\n"); char command[16]; sprintf(command, "A%d\r", pin); RUNLOG(command); char response[BUFFER_SIZE]; memset(response , '\0' , sizeof(response)); int result = invoke(command, response, error); // NSLog(@"analogRead:"); // NSLog(@"[%s]", response); *valuePointer = atoi(response); RUNLOG("#### arduino.js # return analogRead...\n"); return result; }
int sendServStateEmial() { for(unsigned int i =0;i<ServerConf::Instance()->m_ListOftrSrv.size();i++) { RUNLOG("Send Login Message To Front ip:%s,port:%d",ServerConf::Instance()->m_ListOftrSrv[i].sip.c_str(),ServerConf::Instance()->m_ListOftrSrv[i].sport); if(!SendTestCmd(ServerConf::Instance()->m_ListOftrSrv[i].sip,ServerConf::Instance()->m_ListOftrSrv[i].sport)) { AC_INFO("Test failed! Try Send Login Message To Front ip:%s,port:%d",ServerConf::Instance()->m_ListOftrSrv[i].sip.c_str(),ServerConf::Instance()->m_ListOftrSrv[i].sport); for(int j =0;j<5;j++) //失败再测试5次,还不成功则发送邮件 { //AC_INFO("Test fail, Continue SendTo Front ip:%s,port:%d",ServerConf::Instance()->m_ListOftrSrv[i].sip.c_str(),ServerConf::Instance()->m_ListOftrSrv[i].sport); if(!SendTestCmd(ServerConf::Instance()->m_ListOftrSrv[i].sip,ServerConf::Instance()->m_ListOftrSrv[i].sport)) { AC_INFO("Test %d failed, Continue SendTo Front ip:%s,port:%d",i+1,ServerConf::Instance()->m_ListOftrSrv[i].sip.c_str(),ServerConf::Instance()->m_ListOftrSrv[i].sport); ServerConf::Instance()->m_ListOftrSrv[i].scount++; if(ServerConf::Instance()->m_ListOftrSrv[i].scount == 5) { //由状态良好,第一次检测出服务器故障发邮件 或者 发送邮件1小时后,服务器依旧故障,重发邮件 if (ServerConf::Instance()->m_ListOftrSrv[i].SendTime == 0 || ( (time(NULL) - ServerConf::Instance()->m_ListOftrSrv[i].SendTime) > 3600 ) ) { AC_INFO("Send %d message to all listen mail",i+1); SendMail(i,0); ServerConf::Instance()->m_ListOftrSrv[i].SendTime = time(NULL); ServerConf::Instance()->m_ListOftrSrv[i].sendFlag = true; } ServerConf::Instance()->m_ListOftrSrv[i].scount = 0; } } else { AC_INFO("Test %d succeed! SendTo Front ip:%s,port:%d",i+1,ServerConf::Instance()->m_ListOftrSrv[i].sip.c_str(),ServerConf::Instance()->m_ListOftrSrv[i].sport); ServerConf::Instance()->m_ListOftrSrv[i].scount = 0; break; } sleep(1); } } else { if (ServerConf::Instance()->m_ListOftrSrv[i].sendFlag && ( (time(NULL) - ServerConf::Instance()->m_ListOftrSrv[i].SendTime) < 3600 )) //在1小时内发送过故障邮件 { SendMail(i,1); //发送服务器恢复正常的邮件 ServerConf::Instance()->m_ListOftrSrv[i].sendFlag = false; } ServerConf::Instance()->m_ListOftrSrv[i].SendTime = 0; } sleep(1); } return 0; }
void response(char* buffer) { RUNLOG("#### arduino.js # response start...\n"); DWORD numBytes; ClearCommError(handle, &errors, &status); RUNLOG("#### arduino.js # response before ReadFile\n"); RUNLOG(buffer); if(ReadFile(handle, buffer, BUFFER_SIZE, &numBytes, NULL) == 0){ RUNLOG("#### arduino.js # response FAILED ReadFile\n"); ClearCommError(handle, &errors, &status); return; } RUNLOG("#### arduino.js # response after ReadFile\n"); RUNLOG(buffer); RUNLOG("#### arduino.js # response return...\n"); return; }
bool Login_Fund( SSL *ssl){ char szbuf[256]; sprintf(szbuf,"{\"loginacc\":\"%s\",\"token\":\"%s\"}",ServerConf::Instance()->m_TrAcc.c_str(),ServerConf::Instance()->m_PassWord.c_str()); string body1= szbuf; string strjson=body1; unsigned short wCmd=50001; NtPkgHead head; memset(&head,0,sizeof(head)); head.bStartFlag=0xFF; head.bVer=1; head.bEncryptFlag=0; head.bFrag=0; head.wLen= htons(sizeof(NtPkgHead)+body1.size()) ; head.wCmd=htons(wCmd); head.wSeq=0; head.wCrc=0; head.dwSID=0; string outbuf1; outbuf1.append((const char *)&head,sizeof(head)); outbuf1.append((char*)body1.data(),body1.size()); int len1 = SSL_write(ssl,outbuf1.data(),outbuf1.size()); if(len1 != (int)outbuf1.size()){ AC_ERROR("SSL_write buf:%s error erron:%d",body1.c_str(),errno); return false; } char acbuf[8192]; memset(acbuf,0x0,8192); int len = SSL_read(ssl,acbuf,8192); if(len < 0){ AC_ERROR("SSL_read read buf error erron:%d",errno); return false; } RUNLOG("SSL_read ret Data:%s\n",acbuf+sizeof(NtPkgHead)); return true; }
int invoke(char* command, char* buffer, char** error) { RUNLOG("#### arduino.js # invoke start...\n"); DWORD wrotenLength; long commandLength = strlen(command); ClearCommError(handle, &errors, &status); RUNLOG("#### arduino.js # invoke before WriteFile\n"); RUNLOG(command); if(WriteFile(handle, (void *)command, commandLength, &wrotenLength, NULL) == 0){ RUNLOG("#### arduino.js # invoke FAILED WriteFile\n"); ClearCommError(handle, &errors, &status); return -1; } RUNLOG("#### arduino.js # invoke after WriteFile\n"); RUNLOG(command); #ifdef DEBUG char s[1024]; sprintf(s, "commandLength = %d, wrotenLength = %d\n", commandLength, wrotenLength); RUNLOG(s); #endif if(commandLength != wrotenLength){ RUNLOG("#### arduino.js # invoke commandLength != wrotenLength\n"); sprintf(*error, "Error: coudln't write successfully %ld/%ld", wrotenLength, commandLength); RUNLOG(*error); return -1; } RUNLOG("#### arduino.js # invoke before response\n"); response(buffer); RUNLOG("#### arduino.js # invoke after response\n"); RUNLOG("#### arduino.js # invoke return...\n"); return 0; }