Example #1
0
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;
}
Example #2
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;
}
Example #3
0
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;
}
Example #4
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;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
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;
}
Example #10
0
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;
}
Example #11
0
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;
}