serial protocol for Zaber devices은 구현하기가 간단하지만 C++에 샘플 코드가 있습니까?Zaber 장치 용 샘플 C++ 코드
1
A
답변
0
관리되는 C++을 작성하는 경우 C# 또는 Visual Basic 프로젝트에서와 마찬가지로 .NET 라이브러리 DLL을 사용할 수 있습니다. 자세한 내용은 Zaber Console source code을 참조하십시오. 예제는 모두 C# 또는 Visual Basic에 있지만 관리되는 C++에서 동일한 작업을 수행 할 수 있습니다.
관리되는 C++을 쓰지 않는다면 직렬 포트에 직접 작성해야합니다. 명령을 바이트 스트림으로 변환하는 방법을 보여주는 example C code이 있습니다. 이 스 니펫은 6 바이트를 직렬 포트에 쓸 수 있도록 준비합니다.
txBuffer[0] = deviceNum;
txBuffer[1] = command;
// Position 2 is LSB; Position 5 is MSB
txBuffer[2] = (data & 0x000000FF);
txBuffer[3] = ((data >> 8) & 0x000000FF);
txBuffer[4] = ((data >> 16) & 0x000000FF);
txBuffer[5] = ((data >> 24) & 0x000000FF);
이 스 니펫은 직렬 포트에서 수신 한 6 바이트를 처리합니다.
deviceNum = rxBuffer[0];
command = rxBuffer[1];
// Position 2 is LSB; Position 5 is MSB
data = (rxBuffer[2] & 0x000000FF)
+ ((rxBuffer[3] << 8) & 0x0000FF00)
+ ((rxBuffer[4] << 16) & 0x00FF0000)
+ ((rxBuffer[5] << 24) & 0xFF000000);
직렬 포트에 연결하는 방법은 예제와 다를 수 있지만 C++ 컴파일러 설명서가 도움이 될 것입니다. 프로토콜이 동기화되지 않을 경우 재설정하는 타이머와 같은 세부 정보를 보려면 예제 코드를 다운로드하십시오.
직렬 통신 프로토콜에 대한 자세한 내용은 the user manual을 참조하십시오.
아직 C++ 스크립트 템플릿을 만들지 않았지만 C++을 사용하여 Zaber Console scripts을 작성할 수도 있습니다.
0
Zaber 프로토콜을 사용하여 베어 트랩을 조심하십시오 : 마이크로 컨트롤러가 Zaber 모터와 동기화되지 않으면 하나의 패킷의 뒤쪽 절반과 다음의 앞쪽 절반을 읽지 못할 수 있습니다 (타이머를 사용하여 프로토콜 간 상태 갭을 재설정하기위한 패킷 간 타이밍 갭)
켄 (Ken) 내 답변에있는 [예제 C 코드] (http://www.zaber.com/software/Zaber_C_Win32_Demo.zip)에는 프로토콜을 재설정하는 타이머가 포함되어 있습니다. 그래도 내용이 너무 자세하다고 생각했습니다. –