Téléphone : 01 64 42 60 45
A+| A-| A
01 0

Publié par  dans 

두 개 이상의 필드가 포함된 메시지를 받으려고 합니다. 예를 들어 메시지에는 특정 장치(예: 모터 또는 다른 액추에이터)와 설정할 값(예: 속도)을 나타내는 식별자가 포함될 수 있습니다. 소프트웨어 시리얼 포트는 시간과 리소스를 소비한다는 점을 기억해야 합니다. 에뮬레이트된 직렬 포트는 스케치가 « 실제 작업 »을 수행하려고 하는 것과 동일한 프로세서를 사용하여 하드웨어 포트가 수행하는 모든 작업을 수행해야 합니다. 새 캐릭터가 도착할 때마다 프로세서는 이를 처리하기 위해 수행한 작업을 중단해야 합니다. 이 경우 시간이 많이 걸릴 수 있습니다. 예를 들어 4,800baud에서는 Arduino가 단일 문자를 처리하는 데 약 2밀리초가 걸립니다. 2밀리초는 별로 들리지 않을 수 있지만, 앞에서 보여 준 GPS 장치와 같이 초당 200~250자를 전송하는 피어 장치가 있으면 스케치가 직렬 입력을 따라잡기 위해 40~50%의 시간을 소비한다는 점을 고려하십시오. 이렇게 하면 실제로 모든 데이터를 처리할 시간이 거의 없습니다. 이 교훈은 두 개의 직렬 장치가 있는 경우 가능하면 더 높은 대역폭 소비를 가진 장치를 기본 제공(하드웨어) 포트에 연결한다는 것입니다.

고대역폭 장치를 소프트웨어 직렬 포트에 연결해야 하는 경우 스케치 루프의 나머지 부분을 매우 효율적으로 유지해야 합니다. 안녕하세요, 질문이 있습니다. 번호를 직렬 명령으로 인코딩하고 직렬 명령을 수신하여 입력으로 처리하는 프로그램이 있습니다. 이제 하드웨어를 에뮬레이트하고 소프트웨어에 명령을 보내고 싶습니다. 그러나 나는 그것이 어떻게 코딩되는지 전혀 모른다 (나는 정말로 초보자입니다). 나는 당신의 에코 프로그램을 사용하는 경우, 소프트웨어가 잘 작동하지만 난 오류가 있는 소프트웨어에 단지 비트를 보내면. 나는 이것을 보내려면 :30 00 01 02 00 07 00나는 직렬 통신에이것을 얻을 :02 30 0A 20 0A 21 0A 22 0A 20 0A 27 0A 20 AE 03그래서 나는 다시 이러한 통신을 얻기 위해 아두 이노에서 보내야합니까? Serial.write(« 02300A200A210A220A2000A270A20AE03 »)를 사용하는 경우; 그것은 작동하지 않습니다. 이 라인을 보면 누군가가 나를 도울 수 있기를 바랍니다, 여기서 일어나는 일은 Arduino가 100을 얻기 위해 변수 drive_gb의 값을 조회한다는 것입니다.

그런 다음 100을 1024로 곱하여 102400을 얻고 drive_mb 상자에 넣습니다. Arduino 소프트웨어가 수행하는 방법을 제외하고는 drive_gb와 동일한 크기의 임시 변수를 만들어 드라이브_mb에 붙이기 전에 계산 결과를 저장합니다. 그래서 기본적으로 우리는 여전히 오버 플로우를 받고 있습니다, 우리가 계산을 할 때 지금 일어나는 것을 제외하고. 텍스트, 소수점 값, 헥사디말 또는 이진으로 표시되는 Arduino의 직렬 데이터를 보내려고 합니다. 톰 이고에 (확인)에 의해 이야기 만들기. 이 책은 처리 및 Arduino를 다루며 통신 코드의 많은 예를 제공합니다. 전송되는 데이터의 크기가 양쪽에서 동일한지 확인합니다. 정수는 아두 이노에 2 바이트, 대부분의 다른 플랫폼에서 4 바이트입니다.

'.