//구글광고

응용프로그램의 side-by-side 구성이 잘못되어.. 오류 해결방법

sxtrace.exe 도구를 사용하십시오 오류 메세지 해결방법

 
윈도우를 쓰다보면 이상한 프로그램을 지우다가 갑자기 잘 실행되던 프로그램이 안되는 경우가 생긴다 
대표적인 예가..
 
응용프로그램의 side-by-side 구성이 잘못되어 응용 프로그램을 시작하지 못했습니다.
자세한 내용은 응용 프로그램 이벤트 로그를 참조하거나 명령줄 sxtrace.exe 도구를 사용하십시오.
 
이런 에러메시지가 뜬다.
 
 

이런 메시지 일 것이다.

 

원인. Visual C ++ 재배포 패키지를 삭제해서 생긴다.

 

해결법.

 
   1. 이벤트 로그로 가서 몇버전의 재배포 패키지가 필요한지 찾아보자.
 
     시작 버튼(윈도우로고) 을 눌러 이벤트라고 치면 이벤트 뷰어가 나온다.

 

 

이벤트 뷰어 에서 !오류 로 발생한 내역을 찾아보면 version XX~~~ 를 찾을수 없습니다..

라고 나옵니다.

 

 

그럼 구글에서 vc 해당 버전으로 검색해서 설치 해주면 해결됩니다.
보통은 32비트 먼저 깔아보세요
 
 
구글에서 저렇게 버전을 입력해서 검색하거나 이 링크로 가서 다운 받으세요 https://www.microsoft.com/ko-kr/search/DownloadsDrillInResults.aspx?q=visual+c%2b%2b&cateorder=2_1_19_5
 

 

 

 

이렇게 설치하면 해결이 됩니다.

 

 

'사용기' 카테고리의 다른 글

ZenBook A-UX310UA-FC945(DOS) 사용 분해기  (3) 2018.08.22

온습도계 예제 6 - sms 설정과 sketch


1. sms 설정

본 예제에서는 python 으로 문자 메세지를 전송한다. 
다양한 문자 메세지 회사가 있으니
원하는 곳으로 하자

본 예제에서는 coolsms에서 api를 받아왔다

요즘 스팸 문자가 쏟아져서 법이 개정되었다
발신인의 번호를 인증받아야 한다.

만약 문자 메세지 전송이 안될경우 마이페이지의 전송결과를 조회 해서 실패가 뜨면 인증 부분을 수행해야 한다.



이렇게 발신번호가 없이 예전에 만든 계정이 있다면 발신번호 추가를 통해 발신번호를 꼭 등록하자.



회원가입을 한 후 아두이노 IDE를 실행한다.



상단의 툴 메뉴를 통해 보드와 포트를 설정해준다.





포트선택 화면이다 ip번호가 아닌 com포트를 선택하자.

나중에 시리얼 모니터때 값이 안나오는 문제가 있다.




라이브러리 추가

아래 압축 파일들을 다운받는다.


Adafruit_Sensor-master.zip

DHT-sensor-library-master.zip


2개의  zip 파일을 다운받아 바탕화면이나 아무곳에 저장해 둔다.


스케치 > 라이브러리 포함하기 > .ZIP 라이브러리 추가.. 메뉴를 통해 다운받은 2개의 압축파일을 추가해준다.




아래의 소스 코드를 다운받아서 내용을 붙여넣는다.


온습도계v1.txt



붙여넣은 다음 업로드 버튼을 눌러 코드를 전송한다.




업로드 이후에 우측 상단에 시리얼 모니터 버튼을 클릭한다.

 



시리얼 모니터에 현재 온습도가 나오면 정상 동작하는 것이다.




현재 온도와 습도가 나오고 있다 여기서 변경할 수 있는 변수를 알아보면 ,


#include <Process.h>

#include <stdlib.h>

#include "DHT.h"


#define DHTPIN 8     // 센서의 데이터 핀번호

#define DHTTYPE DHT22   // DHT 22  (AM2302)

DHT dht(DHTPIN, DHTTYPE);


String TEM;

String HUM;

char cTEM[5];

char cHUM[5];


double TEM_LIMIT=30.0;  // 온도 문자 경보수치 30도  이 값을 수정하면 알람 임계치가 바뀐다

double HUM_LIMIT=80.0; // 온도 문자 경보 습도 80퍼센트


unsigned long curMillis=0;

unsigned long eventMillis=0;

unsigned long diffMillis=0;

byte eventFlag=LOW; 

unsigned long eventDelay=600000;   // 문자 경보를 알려주는 딜레이 시간 -- 이전에 경보를 보냈으면 10분 동안에는 보내지 않는다.  

 

void setup() {

  // put your setup code here, to run once:

  Bridge.begin();

  dht.begin();

  Serial.begin(9600);

  Serial.println("init");

}


void loop() {

  // put your main code here, to run repeatedly:

  double h = dht.readHumidity();

  double t = dht.readTemperature();

  Serial.print(" TEM:");  

  Serial.print(t);

  Serial.print("  HUM : ");

  Serial.println(h);

      

  dtostrf(h, 3,1, cHUM);

  dtostrf(t, 3,1, cTEM);  

  

  HUM= String(cHUM);

  TEM= String(cTEM);


  curMillis=millis(); // 현재 밀리를 구한다.

 

if (curMillis < eventMillis )

{

   Serial.println("eventmili reset..");

   eventMillis = curMillis ;

}


diffMillis = curMillis - eventMillis;

  

  if (eventFlag == HIGH)

  {

    if ( diffMillis > eventDelay )

    {

      eventFlag=LOW;

        Serial.print(" evenymilli :");  

        Serial.print(eventMillis);

        Serial.print("  curMillis : ");

        Serial.println(curMillis);

        Serial.print(" diff  :");  

        Serial.print( diffMillis );

        Serial.print("  eventDelay  : ");

        Serial.println(eventDelay );

        Serial.println("Event Flag reset..");

      }

    }


  if ((( t > TEM_LIMIT ) && eventFlag == LOW ) || (( h > HUM_LIMIT ) && eventFlag == LOW ))

  {

      eventMillis = curMillis;

      eventFlag=HIGH;

      Serial.println(" SMS alarm !! ");

   

     Process p1;            

     p1.begin("python");

     p1.addParameter("/root/python/sendSMS.py");      

     p1.addParameter(TEM); 

     p1.addParameter(HUM); 

     p1.run();   

      

    }


  Process p;            

  p.begin("python");

  p.addParameter("/root/python/insertDB.py");      

  p.addParameter("1");  

  p.addParameter(TEM); 

  p.addParameter(HUM); 

  p.run();

  Serial.println("Mysql DB insert");  

  

  delay(30000);  //1000 = 1초 , 30초마다 한번 동작하게 한다. 온도게 스팩상 최소 2초로 할것.


}





파이선 소스코드를 아두이노에 업로드 하자


coolsms.py

sendSMS.py


위의 두 예제 파일 중에서 sendSMS.py 를 메모장으로 열어 필요한 부분을 수정하자.


# -*- coding: ms949 -*-


#SMS전송.


import sys

import time

import coolsms


cs = coolsms.sms()

cs.appversion("TEMP/1.0")

cs.charset("cp949")

cs.setuser( "아이디","비밀번호")


cs.addsms("받는사람번호", "보내는사람번호", "온습도알림. 온도:"+sys.argv[1]+" 습도:"+sys.argv[2])


nsent = 0

if cs.connect():

    # add 된 모든 메세지를 서버로 보냅니다.

    nsent = cs.send()

else:

    # 오류처리

    print "Server connect error!!!"


cs.disconnect()

cs.emptyall()

sys.exit(0)

 


빨간색으로 표시된 부분을 자신의 정보에 맞게 변경하자.


그런다음 sftp 를 이용하여 아두이노 윤의 /root/python 폴더를 만들어서 위의 파일을 복사해 두자



sketch 소스의 변수중에 알람온도를 낮춰서 문자가 오는지 테스트 해보자,

단 문자간의 딜레이를 너무 짧게 주면 문자 폭탄을 맞을수 있으니 주의하자.


이렇게 해서 정상적으로 문자가 오면 문자 메세지 전송 및 온습도 측정 부분은 완성이다.


다음엔 DB에 입력하는 파이선 소스와 웹페이지 부분을 보겠다.


아두이노 윤(yun)을 활용한 문자알림가능한 웹페이지형 온습도계 만들기 5

서버세팅(4)



1. 아두이노 윤의 wifi 세팅과 초기 패스워드 설정

2. 아두이노 윤 ssh 접속  

3. mysql 서버 설치 및 설정

4. php5 설치

5. php- mysql-  python 연동모듈 설치




4. php5 설치


혹시 중간에 접속을 끊고 다시 시작한다면 opkg update 를 수행해 주자.

php 모듈을 설치 한다.



opkg install php5 php5-cgi 

 






php 파일을 사용하기 위해 몇가지 설정을 한다.
vi 에디터를 이용해 설정을 변경할 것이다.


vi /etc/config/uhttpd 

 








이렇게 편집창이 뜰것이다.

 





아래로 화살표를 내려 # list interpreter ".php=/usr/bin/php-cgi"

행을 찾아간다 




해당 행의 # 위에서 x 키를 누르면 #표시가 지워진다 





esc를 누르고 :wq 엔터 를 입력한다. 




이렇게 저장해서 밖으로 빠져나올 것이다. 





이제 httpd 를 재시작한다.

 /etc/init.d/uhttpd restart 






5. php- mysql-  python 연동모듈 설치


이제 연동 모듈들을 설치한다.

 opkg install php5-mod-mysql 





php.ini 에 mysql 을 설정한다.


sed -i 's,;extension=mysql.so,extension=mysql.so,g' /etc/php.ini 

 





python 에서 mysql 에 접속하기 위한 커넥터를 설치한다.


opkg install python-mysql 

 



ftp 설치


opkg install vsftpd openssh-sftp-server

 





이것으로 기본 세팅을 마친다.


+ Recent posts