그래서 C# 프로그램을 통해 int를 arduino로 보내려고합니다. 나는 C# 프로그램과 arduino가 서로에게 잘 이야기하고있다. 하나의 ASCII 바이트를 보내면 arduino가 반응합니다. 그러나 더 큰 값, 즉 35를 보내려고 할 때 arduino가 직렬 포트에서 정보를 가져 와서 int로 변환하는 방법을 알아낼 수 있기 때문에 나중에이 값을 일부 수학 함수에 사용할 수 있습니다. 모든 팁/코드? 고마워요! :)C#을 통해 arduino로 int를 보냄
답변
원하는 프로토콜에 따라 약간 다릅니다. 압축 된 데이터 형식을 원하십니까? 아니면 사람이 읽고 쓸 수있는 형식을 원하십니까?
간결한 데이터 구조를 찾으려면 의 개념을 살펴 봐야합니다. 읽기 쉬운 형식과 손으로 쓰기 쉬운 형식을 선호한다면 프로토콜 자체를 구현해야 할 것입니다. 처음부터 나중에 제안 할 것입니다.
문자열로 char 스트림을 채우고 그 문자열을 atoi
함수에 공급할 수있는 것으로 시작하십시오.
죄송합니다. 미리 조리 된 해결책은 아닙니다.
여기에 의사 코드의 종류가 있습니다. 마이크로에 대한 통신이 좋다는 것을 말하고 있기 때문입니다. 아두 이노에 :
char buffer[5]; // or 6 or 7 or... To store numerical chars
당신은 아두 이노이 숫자 라인을 내려오고있다 알려 방법이 필요합니다. 전화 번호가이 같은 "패킷"에 포장되어 가정 :
[I123]
괄호 시작하고 패킷의 끝을 나타냅니다의 I는 정수 데이터 페이로드 나타냅니다. 따라서 Serial.Read() 함수에서 패킷 시작 ([)을 테스트 한 다음 정수 (I)를 나타내는 다음 문자를 테스트해야합니다. 남은 문자는 버퍼에 저장되지만 포함되지는 않습니다 (]). 그런 다음 value = atoi (버퍼)로 값을 가져옵니다.
/*
Simple code to read in an integer value sent over the Serial port.
*/
char ch; // incoming serial character
char chStartPacket = '[';
char chEndpacket =']';
char integerDataType = 'I';
char buf[10];
int index = 0;
int intValue = 0;
void setup()
{
// start serial port at 9600 bps:
Serial.begin(9600);
}
void loop()
{
// assume packet of format [Xddd], where X is packet data type, ddd is data payload
// this is code which compiles, but not tested. Neither is any check done on the payload data
// to ensure good data
if(Serial.available() > 0){
if(Serial.peek() == chStartPacket){
index = 0; // reset index of next integer in buffer
Serial.read(); // get rid of start of packet in serial port buffer
}
else if (Serial.peek() == integerDataType){
Serial.read(); // get rid of data type character in serial port buffer
}
else if (Serial.peek() == chEndpacket){ // all data received, get integer value
Serial.read(); // get rid of end of packet in serial port buffer
intValue = atoi(buf);
Serial.println(intValue); // for visual feedback
}
else{ //must be payload data, add to buffer
buf[index] = Serial.read();
index++;
buf[index] = '\0';
}
}
}
당신은 CmdMessenger library을 사용할 수 있습니다 또는 outlined here 또는 implemented in an example in my blog로 유한 상태 기계에 대한 이동 할 수 있습니다.
나는이 질문에 here 이미 대답했다. "atoi"를 사용할 수 있습니다. C#의 코드는 매우 간단합니다. 내 대답/링크에서 Arduino에 대한 코드를 찾으십시오. 기본적으로 이것은 프로토콜로 작동합니다.
- 1. imap을 통해 메일을 보냄
- 2. C을 찾는 ++ 구현()`
- 3. Arduino로 고생하다
- 4. MySQL 데이터를 Arduino로
- 5. arduino에서 arduino로 텍스트 보내기
- 6. 메시지 대기열을 통해 void * 객체를 보냄 [리눅스]
- 7. 페이 스 북 보내기 단추를 통해 보냄
- 8. PHP와의 문의 양식에서 이메일 정보를 통해 보냄
- 9. URL을 통해 입력 값을 보냄 PHP - JS
- 10. Twitter 메시지를 파이썬을 사용하여 SMS를 통해 보냄
- 11. 명령 프롬프트가 Arduino로 리디렉션되지 않음
- 12. Arduino로 물체 감지하기
- 13. arduino로 txt 쓰기
- 14. arduino로 안드로이드 개발
- 15. PC에서 arduino로 문자열 보내기
- 16. arduino로 분수 건설
- 17. Arduino로 Android를 작동하십시오.
- 18. arduino로 ASCII 읽기
- 19. Arduino로 LCD 프로그래밍
- 20. Arduino로 액정 LCD 프로그래밍?
- 21. Arduino로 AVR Studio 설정하기
- 22. 블루투스를 통해 Android에서 Arduino로 바이트를 보내면 응용 프로그램이 손상됩니다.
- 23. C/C을 찾고 ++ 언어와 표준 라이브러리 사양
- 24. 서버에서 라우터로 Arduino로 데이터 전달
- 25. int를 명령 줄 Python 3을 통해 전달
- 26. 소켓, C, C + +를 통해 int를 보내십시오
- 27. if 문을 통해 perl에 float와 int를 곱하면
- 28. PySerial에서 Arduino로 정수 값 보내기
- 29. Arduino로 MIDI SysEx 메시지를 보내시겠습니까?
- 30. 이 코드를 arduino로 변환하는 방법
다른 점은 C#, c가 좋은 점입니다. 아니, 롤. 당신의 대답으로 조금 더 많은 코드를주는 마음 :) 나는 내가 정말로 필요한 패킷을 테스트 할 수 없다. 당신은 if 진술처럼 이야기하고 있습니까? . .? –
당신이 들어오는 데이터를 읽을 arduino에 가지고있는 코드를 보여줍니다, 우리는 그걸 확장 할 수 있습니다 ... – user2019047
난 그냥 들어오는 데이터를 읽고 그 문장을 사용하여 바이트를 테스트 Serial.Read()를 사용하여 그것이 일치한다면 - 97 (a) - 나는 주도를 켭니다. 특별한 것은 없지만 단지 그 일을 알게 해줍니다. 실제 코드는 현재 내 친구 노트북에 있습니다./ –