Example #1
0
	virtual void onText(CString &msg) {
		CJson json((LPTSTR)msg.getBuffer());
		if ( json.error()==ERR_OK ) {
			switch(json["command"].asInteger()) {
			case 0:	// toggle Date/Time
				gnShowType = json["value"].asInteger();
				if ( gnShowType==SHOW_FOR_TIME ) {
					// disable date dot
					sslm.dot(1, false);
					sslm.dot(3, false);

				} else {
					// enable date dot.
					sslm.dot(1, true);
					sslm.dot(3, true);
					// disable time dot
					sslm.dot(2, false);
					sslm.dot(4, false);
				}
				break;

			case 1:	// brightness
				sslm.brightness(json["value"].asInteger()/100.0f);	// to percentage
				break;

			case 2: // time format, hour type (24/12)
				gnHourType = json["value"].asInteger();
				break;
			}
		}
	}
Example #2
0
//
// iProbe run loop
//
void iProbe::run() {
	CTimeout tm;
	CString  msg;
//	uint32_t m_lstCPU = 0;
	uint32_t m_lstNET = 0;
	while(1) {
		tm.wait(1000);
		tm.reset();
		//
		// Make JSON string
		//
		msg = "{";
		msg += "\"cpu\":";
		msg += map(CThread::getIdleTickCount(), 0, 2000, 0, 100);
		msg += ", \"net\":";
		msg += constrain(OFFSET(CSocket::getRxPackageCount(), m_lstNET, MAX_UINT32), 0, 100);
		msg += ", \"mem\":";
		msg += map(heapAvailableSize(), 0, MAX_USERS_MEMORY, 100, 0);
		msg += "}";

		//
		// Send JSON message to All mail receiver
		//
		CMailBox::post(xMAIL_PROBE, msg.getBuffer());

		//
//		m_lstCPU = CThread::getIdleTickCount();
		m_lstNET = CSocket::getRxPackageCount();
	}
}
void CParticiple::splitter(const char *szPath, const char *szMark)
{
	int nTmp;
	int nIndex;
	int nIndexPhase;
	CFileHandler fh;
	set<string> setData;
	CMysqlHandler mysql;
	CString strSQL;
	set<string>::const_iterator iter_set;
	CString strFileName;
	CString strFilePath;
	string strContent;
	vector<string> vecPhase;

	fh.readPath(szPath, setData);

	if(0 >= setData.size())
	{
		_log("[CParticiple] splitter Path: %s no file", szPath);
		return;
	}

	mysql.connect(EDUBOT_HOST, EDUBOT_DB, EDUBOT_ACCOUNT, EDUBOT_PASSWD, "5");
	if(!mysql.isValid())
	{
		_log("[CParticiple] splitter MySQL invalid");
		return;
	}

	for(iter_set = setData.begin(); setData.end() != iter_set; ++iter_set)
	{
		nIndex = iter_set->rfind(".");
		if((int) string::npos != nIndex)
		{
			if(!iter_set->substr(nIndex + 1).compare("txt"))
			{
				strFileName = trim(iter_set->substr(0, nIndex));
				_log("[CParticiple] splitter Start analysis file: %s", iter_set->c_str());
				strFilePath.format("%s%s", szPath, iter_set->c_str());
				strContent.clear();
				if(!fh.readContent(strFilePath.getBuffer(), strContent, true))
					continue;

				strSQL.format("DELETE FROM story_affective WHERE story = '%s'", strFileName.getBuffer());
				mysql.sqlExec(strSQL.toString());

				//======= 特殊符號替換 =======//
				strContent = ReplaceAll(strContent, "。”", "”。");
				strContent = ReplaceAll(strContent, "。」", "」。");
				_log("[CParticiple] splitter Content: %s", strContent.c_str());

				//======= 字串分詞 ========//
				int nIndex = 0;
				int nLen = 0;
				int nCount = 0;
				CString strPart;

				while(1)
				{
					if(nCount)
						nIndex = nIndex + nLen + strlen(szMark);
					nLen = strContent.find(szMark, nIndex);
					if((int) string::npos == nLen)
						break;
					nLen = nLen - nIndex;
					printf("index=%d , size=%d\n", nIndex, nLen);
					strPart = strContent.substr(nIndex, nLen);
					printf("part: %s\n", strPart.getBuffer());
					strSQL.format("INSERT INTO story_affective (story,numbering,sentence)VALUES('%s',%d,'%s')", strFileName.getBuffer(),nCount,strPart.getBuffer());
					mysql.sqlExec(strSQL.toString());
					++nCount;
				}
			}
		}
	}

	mysql.close();
}
Example #4
0
//
// AT command handle
//
void at_command_handle(CStream *p_serial, CString &str) {
	str.makeUpper();

	// finds command with command list. and return the index of the command list, if found.
	switch( str.find(at_cmd_list, ATCMD_COUNT) ) {
	case 0: // set interval in millisecond.
		m_beacon.interval = str.parseInt(10);
		str = "OK\n";
		break;

	case 1: // get interval
		str.printf("%dms\n", m_beacon.interval);
		break;

	case 2: // set tx power
		m_beacon.tx_power =(BLE_TX_POWER_T) str.parseInt(9);
		str = "OK\n";
		break;

	case 3: // get tx power
		str.printf("%ddBm\n", m_beacon.tx_power);
		break;

	case 4:	// set company id
		m_beacon.company_id = str.parseHex(6);
		str = "OK\n";
		break;

	case 5:	// get company id
		str.printf("0x%04X\n", m_beacon.company_id);
		break;

	case 6:	// set major value
		msb_value_set(m_beacon.data.major, str.parseInt(7));
		str = "OK\n";
		break;

	case 7: // get major value
		str.printf("%d\n", msb_value_get(m_beacon.data.major));
		break;

	case 8: // set minor value
		msb_value_set(m_beacon.data.minor, str.parseInt(7));
		str = "OK\n";
		break;

	case 9:	// get minor value
		str.printf("%d\n", msb_value_get(m_beacon.data.minor));
		break;

	case 10:// set measure rssi
		m_beacon.data.meas_rssi = str.parseInt(6);
		str = "OK\n";
		break;

	case 11:// get measure rssi
		str.printf("%d\n", m_beacon.data.meas_rssi);
		break;

	case 12:// save
		m_p_sgBeacon->write(&m_beacon, sizeof(m_beacon));
		str = "OK\n";
		break;

	case 13:// reset
		system_reset();
		break;

	case 14:// goto DFU
		gotoDFU();
		break;

	default:// command not found
		str = "ERROR\n";
		break;
	}

	// response to stream
	p_serial->write(str.getBuffer(), str.length());
}
Example #5
0
	virtual void onText(CString &msg) {
		CJson json(msg.getBuffer());	// parse the message by CJson
		servoX = json["x"].asFloat();	// set X angle to servoX
		servoY = json["y"].asFloat();   // set Y angle to servoY
		dbg.printf("%0.2f, %0.2f\n", json["x"].asFloat(), json["y"].asFloat());
	}
Example #6
0
void CChihlee::runAnalysis(const char *szInput, JSONObject &jsonResp)
{
	CFileHandler file;
	CString strWord = szInput;
	CResponsePacket respPacket;
	CString strText;
	CString strSound;
	CString strScreen;

	strWord.replace("笑訊", "校訓");
	strWord.replace("校去", "校訓");
	strWord.replace("治理", "致理");

	ofstream csWordFile("/chihlee/jetty/webapps/chihlee/Text.txt", ios::trunc);
	strText.format("%s\n          \n          ", szInput);
	csWordFile << strText.getBuffer() << endl;
	csWordFile.close();
	remove("/chihlee/jetty/webapps/chihlee/map.jpg");

	//=============== 校園導覽 =================================//
	if (0 <= strWord.find("導覽") || 0 <= strWord.find("地圖") || 0 <= strWord.find("參觀") || 0 <= strWord.find("校園"))
	{
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_1.wav";
		strScreen = "/chihlee/jetty/webapps/chihlee/img/map.jpg";
	}

	//=============== 廁所怎麼走 =================================//
	if (0 <= strWord.find("廁所") || 0 <= strWord.find("洗手間") || 0 <= strWord.find("大便") || 0 <= strWord.find("小便")
			|| 0 <= strWord.find("方便間"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_2.wav";
	}

	//=============== 我想找電動輪椅充電 =================================//
	if (0 <= strWord.find("電動輪椅") || 0 <= strWord.find("輪椅充電") || 0 <= strWord.find("充電") || 0 <= strWord.find("沒電"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_3.wav";
	}

	//=============== 圖書館怎麼走 =================================//
	if (0 <= strWord.find("圖書館") || 0 <= strWord.find("圖館") || 0 <= strWord.find("書館") || 0 <= strWord.find("看書"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_4.wav";
	}

	//=============== 校訓 =================================//
	if (0 <= strWord.find("校訓") || 0 <= strWord.find("誠信") || 0 <= strWord.find("致理科大"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/motto.png";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_5.wav";
	}

	//=============== 吉祥物 =================================//
	if (0 <= strWord.find("吉祥物") || 0 <= strWord.find("喜鵲"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/character.jpg";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_6.wav";
	}

	//=============== 校歌 =================================//
	if (0 <= strWord.find("校歌") || 0 <= strWord.find("學生活動"))
	{
		strScreen = "/chihlee/jetty/webapps/chihlee/img/song.jpg";
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_7.wav";
	}

	//================ 謝謝你的解說=====================//
	if (0 <= strWord.find("謝謝") || 0 <= strWord.find("感謝") || 0 <= strWord.find("掰掰") || 0 <= strWord.find("拜拜")
			|| 0 <= strWord.find("謝啦") || 0 <= strWord.find("謝拉"))
	{
		remove("/chihlee/jetty/webapps/chihlee/map.jpg");
		strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_8.wav";
	}

	file.copyFile(strScreen.getBuffer(), "/chihlee/jetty/webapps/chihlee/map.jpg");
	playSound(strSound.getBuffer());

	respPacket.setActivity<int>("type", RESP_TTS).setActivity<const char*>("lang", "zh").setActivity<const char*>("tts",
			"").format(jsonResp);
}