diff --git a/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj b/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj
index 06c5c74..2027d34 100644
--- a/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj
+++ b/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj
@@ -64,12 +64,14 @@
+
-
+
+
-
+
diff --git a/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj.filters b/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj.filters
index db7e967..a3821d0 100644
--- a/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj.filters
+++ b/Modbus_communication/Modbus_RTU_Salve/Modbus_RTU_Salve.vcxproj.filters
@@ -18,7 +18,10 @@
源文件
-
+
+ 源文件
+
+
源文件
@@ -26,7 +29,10 @@
头文件
-
+
+ 头文件
+
+
头文件
diff --git a/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp b/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp
index 70eae14..058c43b 100644
--- a/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp
+++ b/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.cpp
@@ -1 +1,72 @@
-#include
+#include "RTU_Salve.h"
+
+char read_buf[MAX_NUMBER];
+
+
+
+/*********************************************************************************************
+* 功能 : 获取串口读取缓存区中数据的字节数
+* 描述 : 向串口写入数据
+* 返回值 : 缓存区中数据的字节数
+* m_hComm : 串口句柄
+********************************************************************************************/
+unsigned int GetBytesInCOM(HANDLE m_hComm)
+{
+ DWORD dwError = 0; /** 错误码 */
+ COMSTAT comstat; /** COMSTAT结构体,记录通信设备的状态信息 */
+ memset(&comstat, 0, sizeof(COMSTAT));
+
+ unsigned int BytesInQue = 0;
+ /** 在调用ReadFile和WriteFile之前,通过本函数清除以前遗留的错误标志 */
+ if (ClearCommError(m_hComm, &dwError, &comstat))
+ {
+ BytesInQue = comstat.cbInQue; /** 获取在输入缓冲区中的字节数 */
+ }
+ return BytesInQue;
+}
+
+
+
+int test(void)
+{
+ string COMM;
+ cin >> COMM;
+ HANDLE Handle_Com = Init_COM((LPCTSTR)COMM.c_str(), 9600, 8, 0, 1);
+ if (Handle_Com == INVALID_HANDLE_VALUE)
+ {
+ cout << "初始化串口失败" << endl;
+ getchar();
+ return 0;
+ }
+
+ char write_buf[MAX_NUMBER];
+ memset(write_buf, 0, MAX_NUMBER);
+ DWORD dwRead;
+ while (true)
+ {
+ //RTU主站,生成并发送请求,计时,读取响应报文,先发送后接收
+ //生成请求报文
+ //发送请求报文
+
+ PurgeComm(Handle_Com, PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT);//清除缓存
+ while (1)
+ {
+ if (true == SendData(Handle_Com, "ok", 2))
+ {
+ cout << "发送请求报文成功" << endl;
+ break;
+ }
+ }
+ BOOL bReadOK = ReadFile(Handle_Com, read_buf, 256, &dwRead, NULL);
+ if (bReadOK && (dwRead > 0))
+ {
+ read_buf[dwRead] = '\0';
+ printf("收到响应:%s \r\n", read_buf);
+ }
+ else
+ cout << "loss" << endl;
+ }
+ CloseHandle(Handle_Com);
+ getchar();
+ return 0;
+}
diff --git a/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h b/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h
index e69de29..33396fb 100644
--- a/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h
+++ b/Modbus_communication/Modbus_RTU_Salve/RTU_Salve.h
@@ -0,0 +1,6 @@
+#ifndef __RTU_SALVE_H
+#define __RTU_SALVE_H
+
+#include "common.h"
+
+#endif
\ No newline at end of file
diff --git a/Modbus_communication/Modbus_RTU_Salve/common.cpp b/Modbus_communication/Modbus_RTU_Salve/common.cpp
index 7fe1425..e151fe4 100644
--- a/Modbus_communication/Modbus_RTU_Salve/common.cpp
+++ b/Modbus_communication/Modbus_RTU_Salve/common.cpp
@@ -1,6 +1,4 @@
-#include "RTU_common.h"
-
-char read_buf[MAX_NUMBER];
+#include "common.h"
/*******************************************************************************************
* 功能 : 打开串口
@@ -9,10 +7,6 @@ char read_buf[MAX_NUMBER];
* date_bits: 数据位(有效范围4~8)
* stop_bit : 停止位
* parity : 奇偶校验。默认为无校验。NOPARITY 0; ODDPARITY 1;EVENPARITY 2
-
- * dcb.StopBits= 0,1,2对应的是1bit,1.5bits,2bits.
- * dcb.ByteSize=6,7,8时 dcb.StopBits不能为1
- * dcb.ByteSize=5时 dcb.StopBits不能为2
********************************************************************************************/
HANDLE Init_COM(LPCTSTR Port, int baud_rate, BYTE date_bits, BYTE stop_bit, BYTE parity)
{
@@ -70,7 +64,7 @@ HANDLE Init_COM(LPCTSTR Port, int baud_rate, BYTE date_bits, BYTE stop_bit, BYTE
* m_hComm : 串口句柄
* data : 要写入的数据
* len : 写入数据的长度
-********************************************************************************************/
+**********************************************************************************************/
bool SendData(HANDLE m_hComm, char* data, int len)
{
if (m_hComm == INVALID_HANDLE_VALUE)
@@ -89,26 +83,11 @@ bool SendData(HANDLE m_hComm, char* data, int len)
}
/*********************************************************************************************
-* 功能 : 获取串口读取缓存区中数据的字节数
-* 描述 : 向串口写入数据
-* 返回值 : 缓存区中数据的字节数
-* m_hComm : 串口句柄
-********************************************************************************************/
-unsigned int GetBytesInCOM(HANDLE m_hComm)
-{
- DWORD dwError = 0; /** 错误码 */
- COMSTAT comstat; /** COMSTAT结构体,记录通信设备的状态信息 */
- memset(&comstat, 0, sizeof(COMSTAT));
-
- unsigned int BytesInQue = 0;
- /** 在调用ReadFile和WriteFile之前,通过本函数清除以前遗留的错误标志 */
- if (ClearCommError(m_hComm, &dwError, &comstat))
- {
- BytesInQue = comstat.cbInQue; /** 获取在输入缓冲区中的字节数 */
- }
- return BytesInQue;
-}
-
+* 功能 : Ms延时器
+* 描述 : ms级准确延时
+* 输入 : lTime 延时的ms数
+* 返回值 : 无
+**********************************************************************************************/
void MSleep(long lTime)
{
LARGE_INTEGER litmp;
@@ -129,46 +108,60 @@ void MSleep(long lTime)
} while (dfTim> COMM;
- HANDLE Handle_Com = Init_COM((LPCTSTR)COMM.c_str(), 9600, 8, 0, 1);
- if (Handle_Com == INVALID_HANDLE_VALUE)
- {
- cout << "初始化串口失败" << endl;
- getchar();
- return 0;
- }
+
+}
- char write_buf[MAX_NUMBER];
- memset(write_buf, 0, MAX_NUMBER);
- DWORD dwRead;
- while (true)
- {
- //RTU主站,生成并发送请求,计时,读取响应报文,先发送后接收
- //生成请求报文
- //发送请求报文
+/*********************************************************************************************
+* 功能 : 输入波特率
+* 描述 : 获取串口通信的波特率
+* 输入 : 无
+* 返回值 : Boud_Rate 波特率
+**********************************************************************************************/
+unsigned int Input_Boud_Rate(void)
+{
+
+}
+
+/*********************************************************************************************
+* 功能 : 输入数据位
+* 描述 : 获取串口通信的数据位个数
+* 输入 : 无
+* 返回值 : Date_Bits 数据位
+**********************************************************************************************/
+unsigned int Input_Date_Bits(void)
+{
+
+}
+
+/*********************************************************************************************
+* 功能 : 输入停止位
+* 描述 : 获取串口通信的停止位
+* 输入 : Date_Bits 数据位
+* Stop_Bits= 0,1,2对应的是1bit,1.5bits,2bits.
+* Date_Bits=6,7,8时 Stop_Bits不能为1
+* Date_Bits=5时 Stop_Bits不能为2
+* 返回值 : Stop_Bits 数据位
+**********************************************************************************************/
+unsigned int Input_Stop_Bits(unsigned int Date_Bits)
+{
+
+}
+
+/*********************************************************************************************
+* 功能 : 选择校验位
+* 描述 : 获取串口通信的校验位
+* 输入 : 无
+* 返回值 : Parity数据位
+**********************************************************************************************/
+unsigned int Input_Parity(void)
+{
- PurgeComm(Handle_Com, PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT);//清除缓存
- while (1)
- {
- if (true == SendData(Handle_Com, "ok", 2))
- {
- cout << "发送请求报文成功" << endl;
- break;
- }
- }
- BOOL bReadOK = ReadFile(Handle_Com, read_buf, 256, &dwRead, NULL);
- if (bReadOK && (dwRead > 0))
- {
- read_buf[dwRead] = '\0';
- printf("收到响应:%s \r\n", read_buf);
- }
- else
- cout << "loss" << endl;
- }
- CloseHandle(Handle_Com);
- getchar();
- return 0;
}
\ No newline at end of file
diff --git a/Modbus_communication/Modbus_RTU_Salve/common.h b/Modbus_communication/Modbus_RTU_Salve/common.h
index 114ffed..2a76c61 100644
--- a/Modbus_communication/Modbus_RTU_Salve/common.h
+++ b/Modbus_communication/Modbus_RTU_Salve/common.h
@@ -1,5 +1,5 @@
-#ifndef __RTU_COMMON_H
-#define __RTU_COMMON_H
+#ifndef __COMMON_H
+#define __COMMON_H
#include
#include
@@ -8,5 +8,5 @@ using namespace std;
#define MAX_NUMBER 300
-int test();
+
#endif
\ No newline at end of file
diff --git a/Modbus_communication/Modbus_RTU_Salve/main.h b/Modbus_communication/Modbus_RTU_Salve/main.h
index 9524beb..fa09b0d 100644
--- a/Modbus_communication/Modbus_RTU_Salve/main.h
+++ b/Modbus_communication/Modbus_RTU_Salve/main.h
@@ -1,6 +1,6 @@
#ifndef __MAIN_H
#define __MAIN_H
-#include "RTU_common.h"
+#include "RTU_Salve.h"
#endif
\ No newline at end of file