저기보면 RS232 사용자프로토콜을 만들어준다

통신포트 : USB 연결된 곳 번호 COM몇이라고 다다름

전송속도 : 이거 맞쳐야 값이 안깨짐

PANTY : 이것도 기기과 값을 맞쳐줌

DATA Bits : 이것또한 기기랑 맞쳐줌

STOP Bits(s): 이것도 기기랑 맞쳐줌

저장

 

통신시작이라는 뜻이다

 

이런식으로 프레임정의를 정리해준다

""은

ASCII를 하면 "" 이고

여기기랑 통신할 꺼 IP주소 같은거 만든거다

쓰레드가 하나 더 생겻다고 생각하면 쉬울듯하다

일하는애 01이름르호 하나 고용햇다고 하면 더쉬울듯

 

 

 

 

바이너리를 하면 아무것도 없다 

크기를 정해주아야하니

잘정해주고

고정메모리 링크는 내가 받을 테그 

M30 같이 M을 빼주고 써주면됨

++++++++++++++++++++++++

이렇게 태그가 있어야 받아온다

++++++++++++++++++++++++

 

 

오류검사이다 

이것은 내가 받은 값을 잘갓는지 확인하는 것

 

통신 끝이라는 것이다

 

 

 

 

이제 주문하는건 햇고

받는거 만들어주고

실행을 해본다!

딴것좀 하고 다시 작성하겟다

 

 

필요하면 말해라

블로그 이미지

Or71nH

,

###수칙연산

abs(값) 값은 숫자 값을 절대값으로 변환한다
divmod(값,나누기 숫자)

값은 나누고 싶은 숫자 

나누기  숫자는 숫자를 몇으로 나눌건지

변수로 저장이되며 몫 과 나머지를 가진다

결과변수 = {몫.나머지}

pow(값,제곱값) 재곱승의 값 값에 제곱을 하여 반환
all(..., ..., ...,) 안의 모든값이 true or False 로 취급함 0,"", NULL, None 값이 있으면 False 반환
any(..., ..., ...,) 안의 모든값이 true or False 로 취급함 모든 항목이 0,"", NULL, None 값이 있으면 False 반환
enumerate(...) ... => list, tuple, 문자열  리스트같은 애들을 for 함수로 돌리기 편하게 해준다
filter(함수,리스트 변수) 함수중 bool 형으로 만드는것 값이 true 인 값만 리스트에 남는다
filter(lambda,리스트 변수) lambda n: n % 2 == 0 if 같은느낌이다 true 인 값만 리스트에 남는다
list(...)   리스트로 변환해 반환 하는 함수
tuple(...)   튜플로 변환해 반환하는 함수
set(...)   셋으로 변환해 반환하는 함수(
enumerate(dict(...))   딕셔너리로 변환해 반환하는 함수
map(수식, 리스트 변수) 수식은 변환할 공식 수식에 맞게 값들을 대입해 결과값으로 리스트 변수를 만든다
lambda x: x.upper() 소문자 대문자로 바꿈
max(...)   최대값을 반환한다
min(...)   최소값을 반환한다
range(시작 ,까지 ,얼마씩 )   시작부터 끝이 될때까지 지정 수만큼 증가/감소 시킨다
sorted(리스트 변수)   순서를 낮은 값부터 정렬함
reversed(리스트 변수)   순서를 반대로 바꿈
zip(묶을 변수, 묶을 변수, ....)   순서대로 같이 묶음

### divmod

val1, val2 = 9, 5
result_tuple = divmod(val1, val2)

print("divmod({0}, {1}) => 몫 : {2}, 나머지: {3}". format(val1, val2, *result_tuple))

// divmod(9,5) => 목 : 1, 나머지: 4

 

### any

val = [False, "", None]
print("any({0}) => {1}".format(val, any(val)))

//any([False, "", None]) => False

###enumerate

data_list = [10, 20, 30, 40, 50]

for idex, val  in enumerate(data_list):
	print("data_list[{0}]: {1}".format(idx, val))
    
print("-"*25)

for obj in enumerate(data_list):
	print("{0}: {1}, {2}".format(type(obj), obj[0], obj[1]))
    
print("-"*25)

for obj in enumerate(data_list):
	print("{0}: {1}, {2}".format(type(obj), *obj),
    
 // <class 'tuple'>: 0, 10
 // <class 'tuple'>: 1, 20
 // <class 'tuple'>: 2, 30
 // <class 'tuple'>: 3, 40
 // <class 'tuple'>: 4, 50
 

###filter

def iseven(num):
	return num %2 == 0 

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ret_val = filter(iseven, numbers)
# re_val = filter(lambda n: n % 2 == 0, numbers)
print("{0}".format(type(ret_val)))
print("{0}".format(list(ret_val)))

//<class 'filter'>
//[2, 4, 6, 8, 10]

### 변환함수

data_str = "Hello"

data_list = list(data_str)
print("list('{0}') => {1} {2}".format(data_str, type(data_list), data_list))

data_tulpe = tuple(data_list)
print("tuplre({0}) => {1} {2}".format(data_list, type(data_tuple), data_tuple))

data_tuple = tuple(data_tuple)
print("set({0}) => {1} {2}".format(data_tuple, type(data_set), data_set))

data_set = dist(enumerate(data_set))
print("dict({0}) => {1} {2}".format(data_set, type(data_dict), data_dict))


//list('hello') => <class 'list'> 'H', 'e', 'l', 'l', 'o']
//tuple(['H', 'e', 'l', 'l', 'o']) => <class 'tuple'> ('H', 'e', 'l', 'l', 'o')
//set(('H', 'e', 'l', 'l', 'o')) => <class 'set'> {'e', 'l', 'o', 'H'}
//dict({'e', 'l', ''o', 'H'}) => <class 'dict'> {0: 'e', 1: 'l', 2: 'o', 3: 'H'}

###map()

data_list = list("abcdef")

result = list(map(lambda x: x.upper(), data_list))

print("list(map(lambda x: x.upper(), {0})) => {1} {2}".format(data_list, type(result), result))


//list(map(lambda x: x.upper(), ['a', 'b', 'c', 'd', 'e', 'f']))
=> <class 'list'> ['A', 'B', 'C', 'D', 'E', 'F']

###serted()

data_list = [3, 8, 12, 2, 5, 11]

asc_result = sorted(data_list)

print("{0} {1}".format(type(data_list), data_list))
print("{0} {1}" .format(type(asc_result), asc_result))

print("-" * 35)

desc_result = list(reversed(asc_result))
print("{0} {1}".format(type(data_list, data_list))
print("{0} {1}".format(type(asc_result), asc_result))  //오름차순
print("{0} {1}".format(type(desc_result), desc_result)) // 내림차순

##zip()

data_list1 = [1, 2, 3]
data_list2 = [4, 5, 6]
data_list3 = ["a", "b", "c"]

print("list(zip({0}, {1}, {2})) => {3}".format(data_list1, data_list2, data_list3, list(zip(data_list1, data_list2, data_list3))))

// list(zip([1,2,3], [4,5,6], ['a', 'b', 'c'])) => [(1, 4, 'a'), (2, 5, 'b'), (3,6, 'c')]


// dict(zip(data_list3, data_list1))

 

'+++++SW 일일 공부+++++ > SW Expert Aademy' 카테고리의 다른 글

실행 관련 함수  (0) 2020.01.11
Python 변환함수  (0) 2020.01.11
중복제거  (0) 2020.01.07
Python 가위바위보  (0) 2020.01.07
Python 함수 개념  (0) 2020.01.06
블로그 이미지

Or71nH

,

http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21813&cat1=22&cat2=596&cat3=606&lang=k

 

:::MySQL Korea:::

22.2.3.36. mysql_init() MYSQL *mysql_init(MYSQL *mysql) 설명 mysql_real_connect()함수에 맞는 MYSQL 오브젝트를 할당하고 초기화한다. 만약 mysql 가 NULL 포인터라면, 함수는 새로운 오브젝트를 할당하고 초기화하고 리턴한다. 그렇지 않으면, 오브젝트는 초기화되고, 오브젝트의 어드레스는 리턴된다. 만약 mysql_init() 함수가 새로운 오브젝트를 할당한다면, mysql_close() 함

www.mysqlkorea.com

 

블로그 이미지

Or71nH

,

자 그럼 스타트는 라즈베리파이를 먼져 열고 시작해 보겠습니다.

 

푸티를 열어주고

 


잘됫으

 

 

아두이노 설치부터 해야됨

 

  $ sudo apt-get install arduino

끗!!

  $ sudo usermod -a -G tty pi

  $ sudo usermod -a -G dialout pi

 

똭 써주고

뭔가 됫음 근뭔지는 모름 일단 됫음

그리고 파일하나 만들자

 

/*
 Pi_Serial_test.cpp - SerialProtocol library - demo
 Copyright (c) 2014 NicoHood.  All right reserved.
 Program to test serial communication
 
 Compile with:
 sudo gcc -o Pi_Serial_Test.o Pi_Serial_Test.cpp -lwiringPi -DRaspberryPi -pedantic -Wall
 sudo ./Pi_Serial_Test.o
 */
 
// just that the Arduino IDE doesnt compile these files.
#ifdef RaspberryPi 
 
//include system librarys
#include <stdio.h> //for printf
#include <stdint.h> //uint8_t definitions
#include <stdlib.h> //for exit(int);
#include <string.h> //for errno
#include <errno.h> //error output
 
//wiring Pi
#include <wiringPi.h>
#include <wiringSerial.h>
 
// Find Serial device on Raspberry with ~ls /dev/tty*
// ARDUINO_UNO "/dev/ttyACM0"
// FTDI_PROGRAMMER "/dev/ttyUSB0"
// HARDWARE_UART "/dev/ttyAMA0"
char device[]= "/dev/ttyACM0";
// filedescriptor
int fd;
unsigned long baud = 9600;
unsigned long time=0;
 
//prototypes
int main(void);
void loop(void);
void setup(void);
 
void setup(){
 
  printf("%s \n", "Raspberry Startup!");
  fflush(stdout);
 
  //get filedescriptor
  if ((fd = serialOpen (device, baud)) < 0){
    fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
    exit(1); //error
  }
 
  //setup GPIO in wiringPi mode
  if (wiringPiSetup () == -1){
    fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
    exit(1); //error
  }
 
}
 
void loop(){
  // Pong every 3 seconds
  if(millis()-time>=3000){
    serialPuts (fd, "Pong!\n");
    // you can also write data from 0-255
    // 65 is in ASCII 'A'
    serialPutchar (fd, 65);
    time=millis();
  }
 
  // read signal
  if(serialDataAvail (fd)){
    char newChar = serialGetchar (fd);
    printf("%c", newChar);
    fflush(stdout);
  }
 
}
 
// main function for normal c++ programs on Raspberry
int main(){
  setup();
  while(1) loop();
  return 0;
}
 
#endif //#ifdef RaspberryPi

 

 

 

미쿡 형이 잘 설명도 써놧음 찬찬 히 읽으면 이해됨

 

나는 시리얼 보드벤드?? baud??? 이거 115200 이라 

바꿔줫음

 

그리고 실행!!

아 

이거 아두이누는 

이렇게 넣어주고

 

#include <DHT.h>
#define DHTTYPE DHT11

int pinGnd = 4;
int pinVcc = 3;
int pinDht = 2;

DHT dht(pinDht, DHTTYPE);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(pinVcc, OUTPUT);
  pinMode(pinGnd, OUTPUT);
  digitalWrite(pinVcc, HIGH);
  digitalWrite(pinGnd, LOW);

  dht.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(2000);
  float fTemp = dht.readTemperature();
  float fHumi = dht.readHumidity();

  if(isnan(fTemp) || isnan(fHumi)) {
    Serial.println("Falled to read from DNT semsor!");
    return;
  }
  Serial.print("Temperature : ");
  Serial.print(fTemp);
  Serial.print("[C]\t ");
  Serial.print("Humidity: ");
  Serial.print(fHumi);
  Serial.print("%\n");    
  }

이거 칩 셋팅은

 

 

이렇게 햇음

 

 

자그럼 작성도 다됫고

 $ dmesg|tail

아두이노 잘 읽히나 잘보고

 

 

$ sudo gcc test.c -o hello -l wiringPi -DRaspberryPi

  $ sudo ./hello

이렇게

잘 만들어주면

습도 보내기 완료!!

좋았스~

 

 

 

 

블로그 이미지

Or71nH

,
#define PIN_CDS A0
#define PIN_LED 9

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
  //  analogWrite(9, map(analogRead(A0), 0, 1023,0,255));// 이건 밑에거 묶어서 쓰는 코드

  int cds = analogRead(PIN_CDS) ; // 10bit res 1023까지밝기가가능
  int pwm8bit = map(cds, 0,1023,0,255); //받는건 0~1023 이거를 최소 0~~최대 255까지로 변환하라
  analogWrite(PIN_LED, pwm8bit);
}

2번째거 깔기

여기 들가면 됨

맨 밑에 저 DHT 설치됫음

이제 습도 센서인 

 

요놈 사용가능

습도 코드!!!

4에다가 Gnd 

3에다가 가운데

2에다가 마이너스

 

#include <DHT.h>
#define DHTTYPE DHT11

int pinGnd = 4;
int pinVcc = 3;
int pinDht = 2;

DHT dht(pinDht, DHTTYPE);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(pinVcc, OUTPUT);
  pinMode(pinGnd, OUTPUT);
  digitalWrite(pinVcc, HIGH);
  digitalWrite(pinGnd, LOW);

  dht.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(2000);
  float fTemp = dht.readTemperature();
  float fHumi = dht.readHumidity();

  if(isnan(fTemp) || isnan(fHumi)) {
    Serial.println("Falled to read from DNT semsor!");
    return;
  }
  Serial.print("Temperature : ");
  Serial.print(fTemp);
  Serial.print("[C]\t ");
  Serial.print("Humidity: ");
  Serial.print(fHumi);
  Serial.print("%\n");    
  }

 

 

입김부니깐 올라감

블로그 이미지

Or71nH

,