반응형
자 그러면 이제 제데로 받기 위해서 코딩을 약간 수정해 보자.
보내는쪽은 두고 받는쪽만 수정하면 된다.
2바이트로 합치면 된다.
그렇게 어렵지 않기 떄문에 소스코드만 봐도 이해가 갈듯 한다.
그냥 1바이트씩 2바이트 모으면 끝이다.
보내는쪽
#include <SoftwareSerial.h>
SoftwareSerial sSerial= SoftwareSerial(2, 3);
//HardwareSerial& sSerial = Serial2;
volatile unsigned long previousMillis;
void setup()
{
Serial.begin(9600);
sSerial.begin(9600);
previousMillis = millis();
Serial.println(sizeof(int));
Serial.println(sizeof(float));
Serial.println(sizeof(double));
}
void loop()
{
int a = 567;
unsigned long currentMillis = millis();
if ((currentMillis-previousMillis)> 1000*1)
{
sSerial.write((char*)&a, sizeof(a));
previousMillis = currentMillis;
char* p = (char*)&a;
while( (p - ((char*)&a)) < sizeof(a) )
{
//Serial.print(HEX, *p);
//Serial.print(' ');
p++;
}
Serial.println(a);
}
return ;
}
|
받는쪽
#include <SoftwareSerial.h>
SoftwareSerial sSerial= SoftwareSerial(2, 3);
//HardwareSerial& sSerial = Serial2;
void setup()
{
Serial.begin(9600);
sSerial.begin(9600);
}
void loop()
{
char* p;
int a;
if (sSerial.available())
{
p = (char*)&a;
memset(&a, 0x00, sizeof(a));
while( (p - ((char*)&a)) < sizeof(a) )
{
if(sSerial.available())
{
char c = sSerial.read();
//*p = c; p++;
*(p++) = c;
Serial.print(HEX,c);
Serial.print(' ');
}
}
//Serial.print(sizeof(a));
Serial.println(a);
}
return ;
}
|
'아두이노 > 유선통신' 카테고리의 다른 글
아두이노 2대를 이용한 정수와 실수 전송-#7(최종) (0) | 2020.08.07 |
---|---|
아두이노 2대를 이용한 정수와 실수 전송-#6 (0) | 2020.08.05 |
아두이노 2대를 이용한 정수와 실수 전송-#5 (0) | 2020.08.05 |
아두이노 2대를 이용한 정수와 실수 전송-#2 (0) | 2020.08.04 |
아두이노 2대를 이용한 정수와 실수 전송-#1 (0) | 2020.08.04 |
댓글