직렬 포트 프로그래밍 파트 3: VMware 가상 머신에서의 직렬 포트 디버깅

Windows는 호스트 머신이고 Linux는 VMware 가상 머신에 설치됩니다. Linux에서 프로그램을 작성하여 직렬 포트로 메시지를 보낼 수도 있습니다. 원칙은 또한 가상 직렬 포트 소프트웨어 VSPM을 사용하여 COM3과 COM4를 연결한 다음 직렬 포트 디버거를 통해 캡처하는 것입니다. 아래 첨부된 내용은 Linux에서의 직렬 포트 프로그램의 C 코드 예제입니다.


VSPM 사용 및 다운로드에 대해서는 " 직렬 포트 프로그래밍 1부: 가상 직렬 포트 VSPM이 직렬 포트 프로그래밍 문제 해결 "을  참조하십시오. http://blog.csdn.net/zh405123507/article/details/7424877

직렬 포트 프로그래밍의 VB 코드에 대해서는 " 직렬 포트 프로그래밍 파트 2: VB 직렬 포트 데이터 보내기 " http://blog.csdn.net/zh405123507/article/details/7424889 를 참조하십시오.


Ubuntu 명령줄 모드를 예로 들어 VMware에서 가상 머신의 하드웨어를 구성합니다. 직렬 포트 하드웨어 추가를 선택하고 이 시스템의 물리적 직렬 포트를 사용하도록 선택합니다. 주어진 직렬 포트 목록에 따라 선택하십시오. (COM3만 가능한 것 같습니다)




VSPM 폴더 아래의 "Virtual Serial Port Interconnect Plug-in" 디렉터리를 열고 vspm.ini를 VSPM 홈 디렉터리에 복사한 후 원본 구성 파일을 덮어씁니다. 목적은 다음 시작 시 VSPM이 COM3 및 COM4를 연결할 수 있도록 하는 것입니다. Windows에서 사용할 수 있다는 것입니다.프로그램을 사용하여 가상머신 Linux에서 COM3의 입력인 COM4의 출력을 캡처합니다.


가상 머신에 할당한 직렬 포트가 COM3이 아닌지는 중요하지 않습니다. vspm.ini 파일의 마지막 네 줄은 다음과 같습니다.


COM3=127.0.0.1:7102;127.0.0.1:7101;Active;UDP_BC
COM4=127.0.0.1:7101;127.0.0.1:7102;Active;UDP_BC
COM5=127.0.0.1:7202;127.0.0.1:7201;Active;UDP_BC
COM6=127.0.0.1:7201;127.0.0.1:7202;Active;UDP_BC

이 4개의 포트는 쌍으로 연결됩니다(첫 번째 행은 두 번째 행에 연결되고 세 번째 행은 네 번째 행에 연결됨). 따라서 COM 이후의 숫자를 수정하여 필요한 효과를 얻을 수 있습니다.


VMware 및 VSPM을 설정한 후 가상 머신을 시작하고 테스트를 시작할 수 있습니다. 이제 각각 VMware 및 Windows의 Linux에서 직렬 디버거를 시작합니다.




이제 Ubuntu(또는 다른 Linux 콘솔, 이 명령은 보편적임)에 명령을 입력하십시오.

echo hello > /dev/ttyS0

직렬 포트 디버거의 수신 창에 "hello"가 표시되면 링크가 성공한 것이며 VMware Linux의 가상 직렬 포트를 디버깅하는 프로그램을 작성할 수 있다는 의미입니다.




다음은 간단한 Linux C 직렬 포트 프로그램입니다.

#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/signal.h>

#define FALSE 0
#define TRUE 1

int main()
{
	volatile int STOP=FALSE;
	volatile int fd;

	/*类似读写文件的方式打开串口*/
	fd = open( "/dev/ttyS1", O_RDWR);
	if (-1 == fd){
  		perror(" 提示错误!");
	}

	/*设置串口参数*/
	struct termios Opt;
	tcgetattr(fd, &Opt);
	cfsetispeed(&Opt,B19200); //接收波特率
	cfsetospeed(&Opt,B19200); //发送波特率
	tcsetattr(fd,1,&Opt);

	Opt.c_cflag &= ~PARENB;
	Opt.c_cflag &= ~CSTOPB;
	Opt.c_cflag &= ~CSIZE;
	Opt.c_cflag |= ~CS8;

	
	/*开始向fd送数据*/
	int c='0';
	printf("send data\n");
	while (STOP==FALSE) /* modem input handler */
	{
 		c++;
  		c %= 255;
  		write(fd,&c,1); /* stdout */
  		usleep(100000);
	}

	
	return 0;
}

/*需要另外编写函数捕获键盘输入使STOP == FALSE,发送停止*/

컴파일 후 프로그램 출력은 다음과 같습니다.


===================================

이 기사의 출처는 http://blog.csdn.net/zh405123507 입니다.

태그: 직렬 포트 프로그래밍 VMware Linux 파이프라인


추천

출처blog.csdn.net/zh405123507/article/details/7435130