Ejemplo n.º 1
0
LOCAL void ICACHE_FLASH_ATTR setup_wifi_st_mode(void)
{
	wifi_set_opmode(STATION_MODE);
	struct station_config stconfig;
	wifi_station_disconnect();
	wifi_station_dhcpc_stop();
	if(wifi_station_get_config(&stconfig))
	{
		os_memcpy(&stconfig.ssid, WIFI_CLIENTSSID, sizeof(WIFI_CLIENTSSID));
		os_memcpy(&stconfig.password, WIFI_CLIENTPASSWORD, sizeof(WIFI_CLIENTPASSWORD));
		wifi_station_set_config(&stconfig);
		ets_uart_printf("SSID: %s\n",stconfig.ssid);
		stringDraw(2, 1, (char*)stconfig.ssid);
	}
	wifi_station_connect();
	wifi_station_dhcpc_start();
	wifi_station_set_auto_connect(1);
	ets_uart_printf("STA mode\n");

}
Ejemplo n.º 2
0
LOCAL void ICACHE_FLASH_ATTR setup_wifi_ap_mode(void)
{
	ets_uart_printf("\n\nMudando Wifi para modo AP\n");
	wifi_set_opmode(SOFTAP_MODE);
	struct softap_config apconfig;
	wifi_softap_dhcps_stop();
	if(wifi_softap_get_config(&apconfig))
	{
		apconfig.authmode = AUTH_WPA_PSK;
		os_memcpy(&apconfig.ssid, WIFI_CLIENTSSID_AP, sizeof(WIFI_CLIENTSSID));
		os_memcpy(&apconfig.password, WIFI_CLIENTPASSWORD_AP, sizeof(WIFI_CLIENTPASSWORD));
		wifi_softap_set_config(&apconfig);
		ets_uart_printf("SSID: %s\n",apconfig.ssid);

		stringDraw(2, 1, (char*)apconfig.ssid);
		ets_uart_printf("Password: %s\n",apconfig.password);

	}
	wifi_softap_dhcps_start();


}
Ejemplo n.º 3
0
//--------------------------------------------------------------
void Page::meshDraw()
{
    if (meshAlpha > 0.0) {
        float scaledAlpha = meshAlpha * 255;
        
        // mesh
        ofSetColor(128, scaledAlpha);
        mesh.drawWireframe();
        
        // normals
        for (int i=0; i < mesh.getNumIndices(); i++) {
            ofVec3f coord = mesh.getVertex(mesh.getIndex(i));
            ofVec3f norm = mesh.getNormal(mesh.getIndex(i));
            
            ofSetColor(255, 0, 255, scaledAlpha);
            ofLine(coord, coord + (norm * 5));
            ofSetColor(255, 255, 0, scaledAlpha);
            ofPushMatrix();
            ofTranslate(coord);
            ofRotate(90, 0, 1, 0);
            ofCircle(0, 0, 0, 0.1);
            ofPopMatrix();
        }
        
        // bounding box
        ofSetColor(0, 255, 255, scaledAlpha);
        ofLine(boundsMin.x, boundsMin.y, boundsMin.z, boundsMin.x, boundsMin.y, boundsMax.z);
        ofLine(boundsMin.x, boundsMin.y, boundsMax.z, boundsMax.x, boundsMin.y, boundsMax.z);
        ofLine(boundsMax.x, boundsMin.y, boundsMax.z, boundsMax.x, boundsMax.y, boundsMax.z);
        ofLine(boundsMax.x, boundsMax.y, boundsMax.z, boundsMax.x, boundsMax.y, boundsMin.z);
        ofLine(boundsMax.x, boundsMax.y, boundsMin.z, boundsMin.x, boundsMax.y, boundsMin.z);
        ofLine(boundsMin.x, boundsMax.y, boundsMin.z, boundsMin.x, boundsMin.y, boundsMin.z);
        ofLine(boundsMin.x, boundsMin.y, boundsMin.z, boundsMax.x, boundsMin.y, boundsMin.z);
        ofLine(boundsMax.x, boundsMin.y, boundsMin.z, boundsMax.x, boundsMin.y, boundsMax.z);
        ofLine(boundsMax.x, boundsMax.y, boundsMin.z, boundsMax.x, boundsMin.y, boundsMin.z);
        ofLine(boundsMin.x, boundsMax.y, boundsMax.z, boundsMin.x, boundsMin.y, boundsMax.z);
        ofLine(boundsMin.x, boundsMax.y, boundsMin.z, boundsMin.x, boundsMax.y, boundsMax.z);
        ofLine(boundsMin.x, boundsMax.y, boundsMax.z, boundsMax.x, boundsMax.y, boundsMax.z);
        
        // min and max coords
        ofSetColor(255, scaledAlpha);
        stringDraw("(" + ofToString(boundsMin.x, 3) + ", " + ofToString(boundsMin.y, 3) + ", " + ofToString(boundsMin.z, 3) + ")", boundsMin.x, boundsMin.y, boundsMin.z);
        stringDraw("(" + ofToString(boundsMax.x, 3) + ", " + ofToString(boundsMin.y, 3) + ", " + ofToString(boundsMin.z, 3) + ")", boundsMax.x, boundsMin.y, boundsMin.z);
        stringDraw("(" + ofToString(boundsMin.x, 3) + ", " + ofToString(boundsMax.y, 3) + ", " + ofToString(boundsMin.z, 3) + ")", boundsMin.x, boundsMax.y, boundsMin.z);
        stringDraw("(" + ofToString(boundsMin.x, 3) + ", " + ofToString(boundsMin.y, 3) + ", " + ofToString(boundsMax.z, 3) + ")", boundsMin.x, boundsMin.y, boundsMax.z);
        stringDraw("(" + ofToString(boundsMax.x, 3) + ", " + ofToString(boundsMax.y, 3) + ", " + ofToString(boundsMin.z, 3) + ")", boundsMax.x, boundsMax.y, boundsMin.z);
        stringDraw("(" + ofToString(boundsMax.x, 3) + ", " + ofToString(boundsMin.y, 3) + ", " + ofToString(boundsMax.z, 3) + ")", boundsMax.x, boundsMin.y, boundsMax.z);
        stringDraw("(" + ofToString(boundsMin.x, 3) + ", " + ofToString(boundsMax.y, 3) + ", " + ofToString(boundsMax.z, 3) + ")", boundsMin.x, boundsMax.y, boundsMax.z);
        stringDraw("(" + ofToString(boundsMax.x, 3) + ", " + ofToString(boundsMax.y, 3) + ", " + ofToString(boundsMax.z, 3) + ")", boundsMax.x, boundsMax.y, boundsMax.z);
        
        // axis
        ofSetColor(255, 0, 0, scaledAlpha);
        ofLine(0, 0, 0, 10, 0, 0);
        stringDraw("x", 11, 0, 0);
        ofSetColor(0, 255, 0, scaledAlpha);
        ofLine(0, 0, 0, 0, 10, 0);
        stringDraw("y", 0, 11, 0);
        ofSetColor(0, 0, 255, scaledAlpha);
        ofLine(0, 0, 0, 0, 0, 10);
        stringDraw("z", 0, 0, 11);
    }
}
Ejemplo n.º 4
0
void user_init(void)
{
	uint8_t i;



	UartDev.data_bits = EIGHT_BITS;
	UartDev.parity = NONE_BITS;
	UartDev.stop_bits = ONE_STOP_BIT;
	uart_init(BIT_RATE_9600, BIT_RATE_9600);


	i2c_init();
	SSD1306Init();
	clearScreen();
	stringDraw(1, 1, "SDK ver:");
	stringDraw(1, 48, (char*)system_get_sdk_version());


	ets_uart_printf("reset reason: %d\n", reset_info->reason);
	ets_uart_printf("Booting...\n");
	ets_uart_printf("SDK version:%s\n", system_get_sdk_version());

	setup_wifi_st_mode();
	if(wifi_get_phy_mode() != PHY_MODE_11N)
		wifi_set_phy_mode(PHY_MODE_11N);
	if(wifi_station_get_auto_connect() == 0)
		wifi_station_set_auto_connect(1);



#ifdef CONFIG_DYNAMIC
	flash_param_t *flash_param;
	flash_param_init();
	flash_param = flash_param_get();
	UartDev.data_bits = GETUART_DATABITS(flash_param->uartconf0);
	UartDev.parity = GETUART_PARITYMODE(flash_param->uartconf0);
	UartDev.stop_bits = GETUART_STOPBITS(flash_param->uartconf0);
	uart_init(flash_param->baud, BIT_RATE_115200);
#else

#endif
	ets_uart_printf("size flash_param_t %d\n", sizeof(flash_param_t));




#ifdef CONFIG_GPIO
	config_gpio();
#endif



	//		os_timer_disarm(&timer_1);
	//		os_timer_setfn(&timer_1, (os_timer_func_t *)timer_1_int, NULL);
	//		os_timer_arm(&timer_1, 1000, 1);

	// Wait for Wi-Fi connection
	os_timer_disarm(&WiFiLinker);
	os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL);
	os_timer_arm(&WiFiLinker, 1000, 0);




	system_os_task(recvTask, recvTaskPrio, recvTaskQueue, recvTaskQueueLen);
}
Ejemplo n.º 5
0
void ICACHE_FLASH_ATTR wifi_check_ip(void *arg)
{
	char IP[15];
	char IP_temp[3];
	uint8_t wifi_opmode;

	system_soft_wdt_feed();
	os_timer_disarm(&WiFiLinker);

	wifi_opmode = wifi_get_opmode();
	if(wifi_opmode==STATION_MODE){
		switch(wifi_station_get_connect_status())
		{
		case STATION_GOT_IP:

			wifi_get_ip_info(STATION_IF, &ipConfig);
			if(ipConfig.ip.addr != 0 && connState !=WIFI_CONNECTED) {
				connState = WIFI_CONNECTED;
				ets_uart_printf("%d.%d.%d.%d",p[0],p[1],p[2],p[3]);
				uart0_sendStr("\r");
				itoa(p[0],IP_temp);
				IP[0]=IP_temp[0];
				IP[1]=IP_temp[1];
				IP[2]=IP_temp[2];
				IP[3]='.';
				itoa(p[1],IP_temp);
				IP[4]=IP_temp[0];
				IP[5]=IP_temp[1];
				IP[6]=IP_temp[2];
				IP[7]='.';
				itoa(p[2],IP_temp);
				IP[8]=IP_temp[0];
				IP[9]='.';
				itoa(p[3],IP_temp);
				IP[10]=IP_temp[0];
				IP[11]=IP_temp[1];
				IP[12]=IP_temp[2];
				IP[13]=0;
				IP[14]=0;
				stringDraw(3, 1, "IP:");
				stringDraw(3, 18, IP);
				serverInit(23);
			}
			break;
		case STATION_WRONG_PASSWORD:
			connState = WIFI_CONNECTING_ERROR;
			ets_uart_printf("WiFi connecting error, wrong password\n");
			break;
		case STATION_NO_AP_FOUND:
			connState = WIFI_CONNECTING_ERROR;
			ets_uart_printf("WiFi connecting error, ap not found\n");
			setup_wifi_ap_mode();
			break;
		case STATION_CONNECT_FAIL:
			connState = WIFI_CONNECTING_ERROR;
			ets_uart_printf("WiFi connecting fail\n");

			break;
		default:
			connState = WIFI_CONNECTING;
			ets_uart_printf("WiFi connecting...\n");
			stringDraw(3, 1, "WiFi connecting");
		}
		if(wifi_station_get_connect_status()!=STATION_GOT_IP){
			os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL);
			os_timer_arm(&WiFiLinker, 2000, 0);
		}

	}else{
		ets_uart_printf("Conectar na rede SSID: %s\n",WIFI_CLIENTSSID_AP);
	}

}
Ejemplo n.º 6
0
//                             ОДИН ЗАПУСК
// Подпрограмма фильтрации строк с вычисленным параметром фильтрации KHigS;
// -----------------------------------------------------------------------------
void GBitset::RepeatStringDetector() {
  int y,x,p,d,s;
  int MGilb,PGilb;
  int print=1;
  /// GAmp; амплитуда сигнала после 2х преобразований ГИЛБЕРТА.


			   BufHelp.assign(ncnr,0);

			   PGilb=KFStrok; // PGilb - параметр (ширина) преобразования ГИЛБЕРТА
//               p=KFStrok;     // KHigS - параметр фильтрации

			   MGilb=nrows;   // размер массива преобразования ГИЛБЕРТА
			  // KHigS=PGilb*4+8;  // KHigS - параметр фильтрации

			  // нормировка импульсной характеристики фильтра, т.е. импульсные
			  // характеристики фильтров разных порядков должны иметь одинаковые амплитуды.
			  s=sqrt((float)100*KHigS) ;
			  for ( y=0; y < nrows; y++ ){
				if( HStr[y]<4 ){ BufS[y]=0; } // Суммы меньше 8 пикселов считаются равными нолю.
				// <8 (4) пикселей - строки определяются начиная с 2 (1) букв
				else { BufS[y]=HStr[y]*s/7; } // ВАЖНО - сумма вдоль текста HStr[y] домножена на 4  (BufS[y]=4*HStr[y]*s/28;)
				  } // for y                  // BufS[y]=24*sqrt(HStr[y]*s/28);

			  // адаптивная фильтрация  H[y]
			  SP->filterHigh(BufS,KHigS);

			  // преобразование ГИЛБЕРТА 1 - BufT
			  filterGilbert(BufS,BufT, MGilb,PGilb);

#ifdef DEBUGLVL
if ( GrafT[1][5] ) {LDraw(BufT,1200,0x0000AA00);} // вызов функции рисования зеленый
#endif


			  // преобразование ГИЛБЕРТА 2 - BufR сигнал без постоянной составляющей
			  filterGilbert(BufT,BufR, MGilb,PGilb);

//// PolarCoordinates( BufT, BufR, 50000, 500, 200, 16, 0x0000AA00);

			   // увеличение градиента преобразования ГИЛБЕРТА
			   // в окрестности максимума исходной кривой H[y]
			   for (  y=6; y < nrows-6; y++ ){
						x=BufT[y]*BufS[y];
						if(x>=0) BufT[y] = sqrt((float)x);
						else     BufT[y] =-sqrt((float)-x);
				  }// for y
#ifdef DEBUGLVL
if ( GrafT[1][5] ) { LDraw(BufT,1100,0x0000AA00); } // вызов функции рисования зеленый
#endif

		// предворительное вычисление трех направляющих строки.Вычисление максимальнй
		// амплитуды (8 пиксемей от края печа не используются)
		d=0; NStrok=0; // GAmp=0;
		for ( y=8; y < nrows-8; y++ ){
		   // вычисление координат середины строки SAmp по максимому энергии
		   if( BufT[y]<=0 && BufT[y+1]>0 &&
			   BufT[y-2]< BufT[y]   && BufT[y+1]< BufT[y+3] &&
			   BufT[y-4]< BufT[y-2] && BufT[y+3]< BufT[y+5]
			 )
			   {  NStrok++;  /// BufHelp[y]=800;
//                 GAmp=BufR[y]/2; SAmp=BufS[y];
				 // вычисление 2 координат верха и низа строки по уровню GAmp=BufR[y]/2;
				 for ( p=y-4; BufR[p]<BufR[y]/2 && p>8 && p < nrows-8; p-- ){ }
					 HBuf[d]=0;        HBuf[d+1]=p; d+=2;   /// BufHelp[p]+=400;
				 for ( p=y+4; BufR[p]<BufR[y]/2 && p>8 && p < nrows-8; p++ ){ }
					 HBuf[d]=ncolumns; HBuf[d+1]=p; d+=2;   /// BufHelp[p]+=300;
				} // BufHelp[y]=400;
		}// for y
		// NStrok вычисленное колличество строк в печа

DT(" NStrok="<<NStrok);DM(END);

/*        // смещение направляющих строк в вверх и в низ на долю от ширины строки
               for(y=0; y < NStrok*4 && y<nrows; y+=4){
                   // смещение направляющий строки в вверх на одну пятую
                   HBuf[y+3]=HBuf[y+3]+(HBuf[y+3]-HBuf[y+1])/5;
                   // смещение направляющий строки в низ на одну треть
                   HBuf[y+1]=HBuf[y+1]-(HBuf[y+3]-HBuf[y+1])/5;
               }// for y
*/

       // Заполнение структур координатами строк
       // OCRclases.h  // ImageProcessor.cpp
	   strArray->resize(NStrok);   d=0;
       if(NStrok){
         for ( y=0; y < NStrok*4 && y<nrows-4; y+=4 ){
                 // x0,y0,x1,y1 координаты строк
				 strArray[0][d].x0=HBuf[y];   strArray[0][d].y0=HBuf[y+1];
				 strArray[0][d].x1=HBuf[y+2]; strArray[0][d].y1=HBuf[y+3];
				 strArray[0][d].stringFlag=1; // флаг cтроки  =1 (=0), cтрока состоит из букв (линии).
				 strArray[0][d].NLetter=0;    // примерная длинна строки (оценка)
				 d++;
				 // DM( " x0="<<wt.x0<< " y0="<<wt.y0<< " x1="<<wt.x1<< "
                 // y1="<<wt.y1<< "\n---\n");
         }// for y
       }
/* */

// x0,y0,x1,y1
// x0,y0 координаты левого нижнего угла прямоугольника строки (глифа, слога, буквы).
// x1,y1координаты правого верхнего угла прямоугольника строки (глифа, слога, буквы).
//cout<<" @@@@ NStrok="<<NStrok<<" strArray[0][ns].y0="<<strArray[0][0].y0<<" strArray[0][ns].y1="<<strArray[0][0].y1<<endl;

	

/// Дополнение структуры координатами середины между строк и производными от них
    int ns, LimY0, LimY1;
//  strArray->resize(NStrok);
    if( NStrok >=1 ){

         for ( d=0; d < NStrok && d<nrows-4; d++ ){
                 // h высота строки
                 strArray[0][d].h=(strArray[0][d].y1-strArray[0][d].y0);
                 // vLim минимальная длинна вектора
                 strArray[0][d].vLim=strArray[0][d].h*2; // *3/2 сами вектора домножены на *10
         }// for d

         for ( d=0; d < NStrok-1 && d<nrows-4; d++ ){ //
                 // LimY0  верхний лимит строки
                 strArray[0][d].LimY0=(strArray[0][d].y0 + strArray[0][d].y1
                    + strArray[0][d+1].y0 + strArray[0][d+1].y1)/4;
                 // LimY1  нижний лимит строки
                 strArray[0][d+1].LimY1=strArray[0][d].LimY0;
         }// for d
/**/
   } // if(NStrok)

   // отработка самой верхней и самой нижней строки
   // для получения лимитов строк (середины между строками)
   if( NStrok >=2 ){
        ns=NStrok-1;
          // самый нижний лимит
          LimY1=strArray[0][0].y0  + strArray[0][0].y1  - strArray[0][1].LimY1;
          // самый верхний лимит
          LimY0=strArray[0][ns].y1 + strArray[0][ns].y0 - strArray[0][ns-1].LimY0;
          // проверка выхода за граници изображения
          if ( LimY1 < 2 ) LimY1=1;      if ( LimY0 > nrows-2 ) LimY0=nrows-1;
          strArray[0][0].LimY1=LimY1;    strArray[0][ns].LimY0=LimY0;

        /// ТАБЛИЦА
        // DM(END); DM(strArray[0][d].y0<<"\t"); if (y%10==0)DM(END); DM(END);
   }
	
   if( NStrok ==1 ){
	   LimY0=strArray[0][0].y0 - (strArray[0][0].y0 - strArray[0][0].y1)*2;
	   // проверка выхода за граници изображения
	   if ( LimY0<0 ) LimY0=0;
	   strArray[0][0].LimY0=LimY0;
	   
   }
/**/



  // ВИЗУАЛИЗАЦИЯ лимитов строк (черная)
/*  int delta1=strArray[0][0].LimY1;     int delta0=strArray[0][ns].LimY0;
  for(x=0; x < ncolumns-1; x++) {
  for (y=delta1; y<12+delta1; y++)drawData[0][y][x]*=0.1; // 0.8*ncolumns;
  for (y=delta0; y<6 +delta0; y++)drawData[0][y][x]*=0.1; // 0.8*ncolumns;
  }
*/


#ifdef DEBUGLVL
if ( GrafT[1][5] ) {
/*					  // ВИЗУАЛИЗАЦИЯ цифровая
		DM(END);  DM(nrows<<" nrows "); DM(END); DM(END);
  DM(KFStrok<<" KFStrok "); DM(KHigS<<" KHigS "); DM(NStrok<<" NStrok ");
							 DM(END); DM(END);
*/

/*			// ВИЗУАЛИЗАЦИЯ цифровая, координаты строк, медленный вывод
			  DM(END);
			  for ( y=0; y < NStrok*4;  y++ ){   // ТАБЛИЦА
				DM(HBuf[y]<<"\t"); if ((y+1)%10==0)DM(END);
				  }//for y
			  DM(END); DM(END);
*/

					 // ВИЗУАЛИЗАЦИЯ аналоговая
LDraw(BufS,1350,0x000000FF);       // вызов функции рисования красный
LDraw(BufR,1200,0x000000FF);       // вызов функции рисования красный
//LDraw(BufHelp,1100,0x000000FF);  // вызов функции рисования красный
LineVertical(1200, 0x0000AA00);    // зеленый
//sm =(KHigS*8+1250);
//LDraw(BufR,sm,0x00AA0011);     // вызов функции рисования темно синий
/* */
/*
                      /// ТАБЛИЦА лимитов строк
            DM(END);
            for ( y=0; y < NStrok; y++  ){
DM(strArray[0][y].LimY0<<"\t"); if (y%10==0)DM(END);  /// ТАБЛИЦА
              }//for y
            DM(END);

                      /// ТАБЛИЦА лимитов строк
            DM(END);
            for ( y=0; y < NStrok; y++  ){
DM(strArray[0][y].LimY1<<"\t"); if (y%10==0)DM(END);
              }//for y
            DM(END);
*/

					  // ВИЗУАЛИЗАЦИЯ аналоговая
// получение координат верхнего LimY0 и нижнего LimY1 лимита строки из структуры
/* for (int m=0; m <NStrok; m++ ){   //  m+=2
   for( int x =0; x <ncolumns; x++ ){
	  drawData[0][strArray[0][m].LimY0][x]*=0.1;
	  drawData[0][strArray[0][m].LimY0+1][x]*=0.1;
	  drawData[0][strArray[0][m].LimY1][x]*=0.1;
	  drawData[0][strArray[0][m].LimY1+1][x]*=0.1;
   }
  ////  DM(strArray[0][m].LimY1<<"LimY1  ");  DM(strArray[0][m].LimY0<<"LimY0  ");
 } // m
 ////   DM(END);
 */

} // if ( GrafT[1][5] )


 // Визуализация аналоговая  прямоугольников в структурах //
if ( GrafT[1][6] ) { stringDraw(0x0000AA00); } // зеленый
#endif


/**/
 //strArray[0][ns].LimY0 = 1000;
 //strArray[0][0].LimY1=2000;
}//_____________________________________________________________________________