I
infineonintern
Guest
시리얼 포트 프로그래밍 처리 사람들이 도움을 주시기 바랍니다.PCS는 오전 두려고하자
서로 간의 의사 소통을 생성합니다.내가 직렬 포트 프로그래밍에
새로운 오전과
서면 두 가지 간단한 프로그램을 각 PC에 실행합니다.이 프로그램은 윈도우 환경에서 도스 응용 프로그램입니다
와 C로 작성된 것입니다 .하나의 PC의 "읽기"가 될 다른 PC와 PC가 될 것입니다
"쓰기"의 PC."읽기"PC를 그냥 보낸 읽기하고 얼마나 많은 바이트를 표시
"서면의 시리얼 포트은"PC.문제는 이제 각에있는 두 개의 프로그램을 실행할 때입니다
PC를, "읽기"의 PC는 자신의 시리얼 포트와 "쓰기"PC에서 서면입니다 읽고있다
자체 직렬 포트.그들은 핸드하지 않거나 의사 소통.나는 두 가지를 연결했습니다
널 모뎀 케이블을 통해 시리얼 포트가 있지만 작동하지 않습니다.내가 거기에 아무것도
궁금
내 코드 또는 핸드의 설정에 문제가있다.제발 가이드!이것은 "독서에 대한 코드를"PC의 프로그램을 단지
0 바이트, 방법 printf (출력은
그것은 "서면으로"PC에서
9 바이트를 감지할 수 있니?) :
코드 :# "windows.h"포함
# 포함 <stdio.h>
# 포함 <io.h>
# 포함 <conio.h>
# 포함 <stdlib.h>maxBytes 32 정의 #
MAX는 128 정의 #주요 int ()
(
hSerial 처리;
DCB) = (0 dcbSerialParams;
COMMTIMEOUTS 시간 = (0);
는 DWORD dwBytesRead = 0;
숯불 szBuff [maxBytes] = (0);
int readbytes, 난;/ / 시리얼 포트 개방
hSerial =는 CreateFile ( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);(hSerial == INVALID_HANDLE_VALUE)
(
만약 (GetLastError () == ERROR_FILE_NOT_FOUND)
(
printf ( "시리얼 포트가 존재하지 않습니다 \ n");
)
printf ( "다른 오류 \ n");
)/ / 매개 변수를 설정
dcbSerialParams.DCBlength = sizeof (dcbSerialParams);/ / GetCommState 검색을 특정하기 위해 현재의 제어 설정을합니다통신 기기.
만약 (! GetCommState (hSerial, & dcbSerialParams))
(
printf ( "GetCommState, 검색에 현재 제어할 수없습니다. \ n");
)dcbSerialParams.BaudRate = CBR_9600;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;/ / SetCommState 통신 기기의 사양에 따라 구성
/ / DCB.
이 함수는 모든 하드웨어를 제어 설정 reinitializes지만, 그렇지 않아
/ / 빈 출력 또는 입력 대기열
만약 (! SetCommState (hSerial, & dcbSerialParams))
(
printf ( "SetCommState, 수없습니다 DCB에 따라 직렬 포트를 구성규격 설정 \ n ");
)/ / 시간 설정
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
= 50 timeouts.ReadTotalTimeoutMultiplier;
timeouts.WriteTotalTimeoutConstant = 50;
= 50 timeouts.WriteTotalTimeoutMultiplier;/ / 모든 읽기 및 쓰기 작업에 대한 매개 변수를 밖에서 시간을 설정 SetCommTimeouts
만약 (! SetCommTimeouts (hSerial, & 시간))
(
printf ( "SetCommTimeouts, 시리얼에 대한 시간 초과 매개 변수를 설정할 수없습니다포트 \ n ");
)만약 (! ReadFile (szBuff, maxBytes, & dwBytesRead hSerial,이 NULL)) (
printf ( "오류 \ n");
)
다른 (
동안 (ReadFile (hSerial, szBuff, maxBytes, & dwBytesRead, NULL을))
(
readbytes = sscanf ( "% d 개", szBuff);은 (i = 0; 난 <readbytes; 난 )
(
printf ( "% c"로, szBuff [내가]);
)printf ( "\ n");
printf ( "% d 개의 바이트를 직렬 포트에서 읽기. \ n", readbytes);
)/ / 닫는 내려
CloseHandle (hSerial);
)
)
서로 간의 의사 소통을 생성합니다.내가 직렬 포트 프로그래밍에
새로운 오전과
서면 두 가지 간단한 프로그램을 각 PC에 실행합니다.이 프로그램은 윈도우 환경에서 도스 응용 프로그램입니다
와 C로 작성된 것입니다 .하나의 PC의 "읽기"가 될 다른 PC와 PC가 될 것입니다
"쓰기"의 PC."읽기"PC를 그냥 보낸 읽기하고 얼마나 많은 바이트를 표시
"서면의 시리얼 포트은"PC.문제는 이제 각에있는 두 개의 프로그램을 실행할 때입니다
PC를, "읽기"의 PC는 자신의 시리얼 포트와 "쓰기"PC에서 서면입니다 읽고있다
자체 직렬 포트.그들은 핸드하지 않거나 의사 소통.나는 두 가지를 연결했습니다
널 모뎀 케이블을 통해 시리얼 포트가 있지만 작동하지 않습니다.내가 거기에 아무것도
궁금
내 코드 또는 핸드의 설정에 문제가있다.제발 가이드!이것은 "독서에 대한 코드를"PC의 프로그램을 단지
0 바이트, 방법 printf (출력은
그것은 "서면으로"PC에서
9 바이트를 감지할 수 있니?) :
코드 :# "windows.h"포함
# 포함 <stdio.h>
# 포함 <io.h>
# 포함 <conio.h>
# 포함 <stdlib.h>maxBytes 32 정의 #
MAX는 128 정의 #주요 int ()
(
hSerial 처리;
DCB) = (0 dcbSerialParams;
COMMTIMEOUTS 시간 = (0);
는 DWORD dwBytesRead = 0;
숯불 szBuff [maxBytes] = (0);
int readbytes, 난;/ / 시리얼 포트 개방
hSerial =는 CreateFile ( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);(hSerial == INVALID_HANDLE_VALUE)
(
만약 (GetLastError () == ERROR_FILE_NOT_FOUND)
(
printf ( "시리얼 포트가 존재하지 않습니다 \ n");
)
printf ( "다른 오류 \ n");
)/ / 매개 변수를 설정
dcbSerialParams.DCBlength = sizeof (dcbSerialParams);/ / GetCommState 검색을 특정하기 위해 현재의 제어 설정을합니다통신 기기.
만약 (! GetCommState (hSerial, & dcbSerialParams))
(
printf ( "GetCommState, 검색에 현재 제어할 수없습니다. \ n");
)dcbSerialParams.BaudRate = CBR_9600;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;/ / SetCommState 통신 기기의 사양에 따라 구성
/ / DCB.
이 함수는 모든 하드웨어를 제어 설정 reinitializes지만, 그렇지 않아
/ / 빈 출력 또는 입력 대기열
만약 (! SetCommState (hSerial, & dcbSerialParams))
(
printf ( "SetCommState, 수없습니다 DCB에 따라 직렬 포트를 구성규격 설정 \ n ");
)/ / 시간 설정
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
= 50 timeouts.ReadTotalTimeoutMultiplier;
timeouts.WriteTotalTimeoutConstant = 50;
= 50 timeouts.WriteTotalTimeoutMultiplier;/ / 모든 읽기 및 쓰기 작업에 대한 매개 변수를 밖에서 시간을 설정 SetCommTimeouts
만약 (! SetCommTimeouts (hSerial, & 시간))
(
printf ( "SetCommTimeouts, 시리얼에 대한 시간 초과 매개 변수를 설정할 수없습니다포트 \ n ");
)만약 (! ReadFile (szBuff, maxBytes, & dwBytesRead hSerial,이 NULL)) (
printf ( "오류 \ n");
)
다른 (
동안 (ReadFile (hSerial, szBuff, maxBytes, & dwBytesRead, NULL을))
(
readbytes = sscanf ( "% d 개", szBuff);은 (i = 0; 난 <readbytes; 난 )
(
printf ( "% c"로, szBuff [내가]);
)printf ( "\ n");
printf ( "% d 개의 바이트를 직렬 포트에서 읽기. \ n", readbytes);
)/ / 닫는 내려
CloseHandle (hSerial);
)
)