user-0 提问: c語言實現rs232通過頭tx輸出rx輸入

回复:
user: user-1
content: 引用 7 楼 u012293844 的回复:[quote=引用 5 楼 llxxhm 的回复:] [quote=引用 2 楼 u012293844 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] 参考： MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF板子上通過serial口插上serial線然後用金屬條將txrx相連 板子上運行程序能實現從tx傳數據給rx嗎？[/quote] 是的,TX和RX短接之后,硬件上就通了,只要驱动支持,应用就可以收到数据[/quote]但是我只要發送數據，機器就重啟[/quote] 如果应用可以用在其它地方接收串口数据,那很可能就是硬件的问题了

user: user-0

user: user-0
content: 引用 5 楼 llxxhm 的回复:[quote=引用 2 楼 u012293844 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] 参考： MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF板子上通過serial口插上serial線然後用金屬條將txrx相連 板子上運行程序能實現從tx傳數據給rx嗎？[/quote] 是的,TX和RX短接之后,硬件上就通了,只要驱动支持,应用就可以收到数据[/quote]但是我只要發送數據，機器就重啟

user: user-2
content: //打开串口 hCOM = CreateFile("\\\\.\\COM3", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCOM == INVALID_HANDLE_VALUE) { 	if ((i = GetLastError()) == 2)  		MessageBox(GetForegroundWindow(), TEXT("该串口不存在"), TEXT("操作失败"), MB_ICONINFORMATION); 	else if (i == 5) 		MessageBox(GetForegroundWindow(), TEXT("该串口已被占用"), TEXT("操作失败"), MB_ICONINFORMATION); 	else 		MessageBox(GetForegroundWindow(), TEXT("无法打开串口"), TEXT("操作失败"), MB_ICONINFORMATION); 	return TRUE; }  if (PurgeComm(hCOM, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR) == 0) { 	MessageBox(GetForegroundWindow(), TEXT("清除串口缓冲区出错"), TEXT("操作失败"), MB_ICONINFORMATION); 	return TRUE; }  //设置串口的波特率等等 if (!GetCommState(hCOM, &dcb)) { 	MessageBox(GetForegroundWindow(), TEXT("无法获取串口状态"), TEXT("操作失败"), MB_ICONINFORMATION); 	hCOM = INVALID_HANDLE_VALUE; 	return TRUE; } dcb.BaudRate = 9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; if (!SetCommState(hCOM, &dcb)) { 	MessageBox(GetForegroundWindow(), TEXT("无法设置串口状态"), TEXT("操作失败"), MB_ICONINFORMATION); 	hCOM = INVALID_HANDLE_VALUE; 	return TRUE; }  //设置串口超时 COMMTIMEOUTS communication_timeout; communication_timeout.ReadIntervalTimeout=MAXDWORD; communication_timeout.ReadTotalTimeoutMultiplier=200; communication_timeout.ReadTotalTimeoutConstant=1000; communication_timeout.WriteTotalTimeoutMultiplier=0; communication_timeout.WriteTotalTimeoutConstant=0; if (!SetCommTimeouts(hCOM, &communication_timeout)) { 	MessageBox(GetForegroundWindow(), TEXT("无法设置串口超时"), TEXT("操作失败"), MB_ICONINFORMATION); 	hCOM = INVALID_HANDLE_VALUE; 	return TRUE; }  //清除串口缓冲区 if (PurgeComm(hCOM, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR) == 0) { 	MessageBox(GetForegroundWindow(), TEXT("清除串口缓冲区出错"), TEXT("操作失败"), MB_ICONINFORMATION); 	return FALSE; }  //发送数据 BYTE cDataBuf[6]; DWORD dwBytesWriten, dwBytesReaded; cDataBuf[0] = 0x55; cDataBuf[1] = bType; cDataBuf[2] = 0xff; cDataBuf[3] = 0xff; cDataBuf[4] = 0xff; cDataBuf[5] = 0xaa; WriteFile(hCOM, cDataBuf, 6, &dwBytesWriten, NULL);  //接收数据 ReadFile(hCOM, cDataBuf, 6, &dwBytesReaded, NULL);

user: user-1
content: 引用 2 楼 u012293844 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 参考： MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF板子上通過serial口插上serial線然後用金屬條將txrx相連 板子上運行程序能實現從tx傳數據給rx嗎？[/quote] 是的,TX和RX短接之后,硬件上就通了,只要驱动支持,应用就可以收到数据

user: user-0
content: 板子上通過serial口插上serial線然後用金屬條將txrx相連 板子上運行程序能實現從tx傳數據給rx嗎？

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:参考： MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF板子上通過serial口插上serial線然後用金屬條將txrx相連 板子上運行程序能實現從tx傳數據給rx嗎？

user: user-3
content: 参考： MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF