From 006dfa62b8416ac12e048d09de4f09aabc0a9d9c Mon Sep 17 00:00:00 2001 From: Yuhui Date: Tue, 30 Jan 2024 11:36:48 +0800 Subject: [PATCH] =?UTF-8?q?20240130=20=E5=A2=9E=E5=8A=A0IMP=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=92=8C=E6=8E=A7=E5=88=B6=E7=95=8C=E9=9D=A2=E5=92=8C?= =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E9=80=9A=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lib/Decoder_H264_ALLD.lib | Bin 4816 -> 4816 bytes Lib/Decoder_H264_ALLR.lib | Bin 4816 -> 4816 bytes .../CH91PayloadSoftware.cpp | 1 + .../CH91PayloadSoftware.rc | Bin 45820 -> 57972 bytes .../CH91PayloadSoftware.vcxproj | 16 +- .../CH91PayloadSoftware.vcxproj.filters | 39 ++++ .../CH91PayloadSoftwareDlg.cpp | 108 ++++++++- .../CH91PayloadSoftwareDlg.h | 13 +- .../ComControlFunction.cpp | 185 +++++++++++++++ Src/CH91PayloadSoftware/ComControlFunction.h | 41 ++++ Src/CH91PayloadSoftware/DlgIMP.cpp | 134 +++++++++++ Src/CH91PayloadSoftware/DlgIMP.h | 36 +++ Src/CH91PayloadSoftware/FrameIMP_DOWN.cpp | 110 +++++++++ Src/CH91PayloadSoftware/FrameIMP_DOWN.h | 84 +++++++ Src/CH91PayloadSoftware/FrameRecieve.h | 1 - Src/CH91PayloadSoftware/Global.cpp | 58 +++-- Src/CH91PayloadSoftware/Global.h | 4 +- Src/CH91PayloadSoftware/GlobalMember.cpp | 23 +- Src/CH91PayloadSoftware/GlobalMember.h | 13 ++ Src/CH91PayloadSoftware/GlobalMessage.h | 4 + Src/CH91PayloadSoftware/IMPConect.cpp | 12 + Src/CH91PayloadSoftware/IMPConect.h | 7 + .../MulticastSocketReceiveDlg.cpp | 215 +++++++++++++++++- .../MulticastSocketReceiveDlg.h | 26 +++ Src/CH91PayloadSoftware/Serial.cpp | 11 +- Src/CH91PayloadSoftware/Serial.h | 4 +- Src/CH91PayloadSoftware/basetype.h | 19 ++ Src/CH91PayloadSoftware/bufferloop.h | 5 +- Src/CH91PayloadSoftware/resource.h | Bin 62258 -> 65668 bytes Src/CH91PayloadSoftware/stdafx.h | 1 + 版本说明.txt | 3 + 31 files changed, 1128 insertions(+), 45 deletions(-) create mode 100644 Src/CH91PayloadSoftware/ComControlFunction.cpp create mode 100644 Src/CH91PayloadSoftware/ComControlFunction.h create mode 100644 Src/CH91PayloadSoftware/DlgIMP.cpp create mode 100644 Src/CH91PayloadSoftware/DlgIMP.h create mode 100644 Src/CH91PayloadSoftware/FrameIMP_DOWN.cpp create mode 100644 Src/CH91PayloadSoftware/FrameIMP_DOWN.h create mode 100644 Src/CH91PayloadSoftware/IMPConect.cpp create mode 100644 Src/CH91PayloadSoftware/IMPConect.h create mode 100644 版本说明.txt diff --git a/Lib/Decoder_H264_ALLD.lib b/Lib/Decoder_H264_ALLD.lib index 34074e113c8285afa597867d0cef8676c863d00d..a261865e7cefbecee5de0ebef671322e0a741ed7 100644 GIT binary patch delta 520 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 diff --git a/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj b/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj index 8aed757..c0148c3 100644 --- a/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj +++ b/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj @@ -49,15 +49,15 @@ true ..\..\Bin\ $(Configuration)\ - C:\ProgramFiles\boost_1_56;$(IncludePath) - C:\ProgramFiles\boost_1_56\stage\lib;$(LibraryPath) + E:\FH-98机载相机监控软件2023\ProgramFiles\boost_1_56;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\include;E:\FH-98机载相机监控软件2023\ProgramFiles\gdal\include;$(IncludePath) + C:\ProgramFiles\boost_1_56\stage\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\boost_1_56\stage\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\gdal\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\lib\x86;$(LibraryPath) false ..\..\Bin\ ..\..\Bin\ - C:\ProgramFiles\boost_1_56;$(IncludePath) - C:\ProgramFiles\boost_1_56\stage\lib;$(LibraryPath) + C:\ProgramFiles\boost_1_56;E:\FH-98机载相机监控软件2023\ProgramFiles\boost_1_56;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\include\opencv;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\include\opencv2;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\include;E:\FH-98机载相机监控软件2023\ProgramFiles\gdal\include;$(IncludePath) + C:\ProgramFiles\boost_1_56\stage\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\boost_1_56\stage\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\gdal\lib;E:\FH-98机载相机监控软件2023\ProgramFiles\opencv245\lib\x86;$(LibraryPath) FH98PayloadOnBoard @@ -176,13 +176,17 @@ + + + + @@ -225,10 +229,14 @@ + + + + diff --git a/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj.filters b/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj.filters index c82d0e3..5c51045 100644 --- a/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj.filters +++ b/Src/CH91PayloadSoftware/CH91PayloadSoftware.vcxproj.filters @@ -79,6 +79,21 @@ {ab6ee3f8-60f1-43e8-9f15-bbb160de9c67} + + {f06cd1e0-85bf-45a0-867a-ee5a88d8e499} + + + {ac0ffa33-f9fc-4e75-9781-73b28c12be43} + + + {14c6a6db-8887-4abf-aeee-f39bfcb37fc6} + + + {04315dca-4ce2-425a-bcc9-d26fe11219c5} + + + {8eb1f68d-8c2d-485d-b3bd-9859d81467d5} + @@ -357,6 +372,18 @@ 加解密 + + 通信相关\串口类\串口控制相关 + + + IMP\通信 + + + IMP\对话框 + + + IMP\协议 + @@ -470,6 +497,18 @@ 加解密 + + 通信相关\串口类\串口控制相关 + + + IMP\通信 + + + IMP\对话框 + + + IMP\协议 + diff --git a/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.cpp b/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.cpp index 541c549..002d511 100644 --- a/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.cpp +++ b/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.cpp @@ -81,6 +81,8 @@ CCH91PayloadSoftwareDlg::CCH91PayloadSoftwareDlg(CWnd* pParent /*=NULL*/) g_bMapDirectGuide = FALSE; // Ƿǵͼֱӵ־ p_DlgCameraCtrl = NULL; + g_DlgIMP = NULL;//IMPԻʼָ + } void CCH91PayloadSoftwareDlg::DoDataExchange(CDataExchange* pDX) @@ -121,6 +123,9 @@ BEGIN_MESSAGE_MAP(CCH91PayloadSoftwareDlg, CDialogEx) ON_WM_MBUTTONDOWN() ON_WM_MOUSEMOVE() ON_WM_MBUTTONUP() + + //ON_MESSAGE(WM_UPDATE_IMPDOWN_CHECKED, OnUpdateIMPDownDataChecked) //IMPң + END_MESSAGE_MAP() @@ -347,6 +352,7 @@ BOOL CCH91PayloadSoftwareDlg::OnInitDialog() assert(LocalPort1 != 0 && RemotePort1 != 0); g_bCreatSend2Mobile = g_UdpSend2Mobile.StartListening(LocalIp1, LocalPort1, RemoteIp1, RemotePort1); */ + return TRUE; } @@ -378,6 +384,29 @@ void CCH91PayloadSoftwareDlg::OnInitControlDlg() } p_DlgCameraCtrl->MoveWindow(&rc_ControlInstruction); p_DlgCameraCtrl->ShowWindow(SW_SHOW); + + + /***********IMP************/ + CRect rc_ControlInstructionIMP; + GetDlgItem(IDC_STATIC_CONTROLINSTRUCTION_IMP)->GetWindowRect(rc_ControlInstructionIMP); + ScreenToClient(rc_ControlInstructionIMP); + + g_DlgIMP = new CDlgIMP(); + if(g_DlgIMP != NULL) + { + g_DlgIMP->Create(IDD_DLG_IMP, this); + } + g_DlgIMP->MoveWindow(&rc_ControlInstructionIMP); + g_DlgIMP->ShowWindow(SW_SHOW); + if(g_DlgIMP->IsWindowVisible()) + { + IMPDlgWindowVisible=true; + } + else + { + IMPDlgWindowVisible=false; + } + } // Խгʼ void CCH91PayloadSoftwareDlg::OnInitCH96Decoder() @@ -584,6 +613,13 @@ void CCH91PayloadSoftwareDlg::OnDestroy() delete p_DlgCameraCtrl; p_DlgCameraCtrl = NULL; } + // жIMPԻ + if(g_DlgIMP !=NULL) + { + delete g_DlgIMP; + g_DlgIMP = nullptr; + IMPDlgWindowVisible = false; + } } // ʾɼͼ񸴽Ϣ @@ -1159,13 +1195,16 @@ void CCH91PayloadSoftwareDlg::DlgStyleChange() m_Btn_Replay.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(29, 191, 151));// ָťʱɫ m_Btn_Replay.DrawTransparent(TRUE); + + //ᱨԭ // ״̬鿴 - m_Btn_FJ.SubclassDlgItem(IDC_BTN_SHOW_FJ, this); - m_Btn_FJ.SetIcon(IDI_ICON_MAIN_FJ); - m_Btn_FJ.SetTooltipText("Status Inquiry"); - m_Btn_FJ.SetAlign(CButtonST::ST_ALIGN_VERT);// - m_Btn_FJ.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(29, 191, 151)); - m_Btn_FJ.DrawTransparent(TRUE); + //m_Btn_FJ.SubclassDlgItem(IDC_BTN_SHOW_FJ, this); + //m_Btn_FJ.SetIcon(IDI_ICON_MAIN_FJ); + //m_Btn_FJ.SetTooltipText("Status Inquiry"); + //m_Btn_FJ.SetAlign(CButtonST::ST_ALIGN_VERT);// + //m_Btn_FJ.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(29, 191, 151)); + //m_Btn_FJ.DrawTransparent(TRUE); + // 鲥 m_Btn_SocketReceive.SubclassDlgItem(IDC_BTN_MULTICASTSOCKETRECEIVE, this); m_Btn_SocketReceive.SetIcon(IDI_ICON_MAIN_SOCKETSEND); @@ -2021,3 +2060,60 @@ double CCH91PayloadSoftwareDlg::GetOffsetAngle(int X, int Y) return PayLoad_Yaw; } + +/**********IMP**********/ +////IMP֡ͨУĺ +//void CALLBACK IMPDOWNCheckCallback(CFrameIMPDown_ *ss) +//{ +// ::SendMessageA(g_mainDlgHwnd,WM_UPDATE_IMPDOWN_CHECKED,0,0); +//} +////IMPݺ󣬽У +//void OnReadFromCommIMP( char *buffer,const DWORD size) +//{ +// //buffer = (unsigned char*)buffer; +// const BYTE* buffer2 = (BYTE*)buffer; +// if(size>0) +// { +// BYTE DCBufferCmd[6]; +// memset(DCBufferCmd,0,sizeof(DCBufferCmd)); +// +// /********У飬Уͨ͸g_FrameIMPDownֵ********/ +// g_FrameIMPDown.Phrase(buffer2, size); +// ////IMPЭصãУͨԶøûص +// //g_FrameIMPDown.SetCheckCallback((IMPDOWNCheckCallback,nullptr),nullptr); +// //g_FrameIMPDown.SetNotCheckCallback(nullptr); +// ::SendMessageA(g_mainDlgHwnd,WM_UPDATE_IMPDOWN_CHECKED,0,0); +// } +//} +////ʼ +//void CCH91PayloadSoftwareDlg::onInitIMPFrame() +//{ +// //ͨ +// memset(pSerialPort, 0, 20); +// GetSerialPortNumber(pSerialPort,"40"); +// CString IMPComPort; +// IMPComPort = "115200"; +// pSerialPortBaud = atoi(IMPComPort);// +// if (!OnCheckComPort(pSerialPort)) //ڱռãfalse +// { +// return; +// } +// if(m_SerialIMP.Initialize(pSerialPort, pSerialPortBaud, 8, 0, 0)) //ͨ +// { +// m_SerialIMP.SetComReadCallback( OnReadFromCommIMP ); +// //m_SerialIMP.SetNotCheckCallback(nullptr,NULL); +// BYTE buffersend[10]; +// memset(buffersend,1,10); +// m_SerialIMP.WriteABuffer(buffersend,sizeof(buffersend)); +// } +//} +////ͨУIMP +//LRESULT CCH91PayloadSoftwareDlg::OnUpdateIMPDownDataChecked(WPARAM param, LPARAM lparam) +//{ +// //ݽʾ +// if(p_DlgIMP->IsWindowVisible()) +// { +// p_DlgIMP->SetIMPData(g_FrameIMPDown); +// } +// return 0; +//} \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.h b/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.h index 3e60ff3..a3d38f0 100644 --- a/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.h +++ b/Src/CH91PayloadSoftware/CH91PayloadSoftwareDlg.h @@ -21,7 +21,8 @@ #include "afxwin.h" #include "afxcmn.h" #include "DlgCameraCtrl.h" - +#include "DlgIMP.h" +//#include "FrameIMP_DOWN.h" // CCH91PayloadSoftwareDlg Ի class CCH91PayloadSoftwareDlg : public CDialogEx @@ -192,4 +193,14 @@ public: afx_msg void OnMButtonUp(UINT nFlags, CPoint point); // ϶ʱƫγɵĽǶ double GetOffsetAngle(int X, int Y); + + + //////IMP + CDlgIMP * g_DlgIMP;//IMPԻ + //CSerial m_SerialIMP; // IMPͨŴ + //char pSerialPort[20];//ں + //DWORD pSerialPortBaud;//˿ں + //void onInitIMPFrame();//ʼIMPЭ + //LRESULT OnUpdateIMPDownDataChecked(WPARAM param, LPARAM lparam); //IMPͨУң + }; diff --git a/Src/CH91PayloadSoftware/ComControlFunction.cpp b/Src/CH91PayloadSoftware/ComControlFunction.cpp new file mode 100644 index 0000000..596c527 --- /dev/null +++ b/Src/CH91PayloadSoftware/ComControlFunction.cpp @@ -0,0 +1,185 @@ +//ܣʵִڲһЩ +#include "StdAfx.h" +#include "ComControlFunction.h" + +//ϵͳõĴںţеĴںűpPortList +//portNumberںpPortList +//pPortListڵĴ +BOOL ScanPCCom( int *pPortList, int& portNumber ) +{ + portNumber = 0; //ϵͳõĴ + + //ɨPCڵĴڣעȡڵĴڡ + UINT nComNum = 0; + HKEY hKEY = NULL; + LONG hResult = ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T( "HARDWARE\\DEVICEMAP\\SERIALCOMM" ), 0, KEY_READ, &hKEY ); + + if ( hResult != ERROR_SUCCESS ) //޷hKEY,ִֹ + { + return FALSE; + } + + TCHAR strInf[30]; + memset( strInf, 0, sizeof( TCHAR ) * 30 ); + + DWORD type_1 = REG_SZ; + DWORD cbData_1 = 10; + DWORD aa = 30, num = 0; + DWORD a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0; + + //hResult = ::RegQueryInfoKey( hKEY, strInf, &a7, NULL, &a3, &a1, &a2, &num, &a4, &a5, &a6, NULL ); + hResult = ::RegQueryInfoKeyA( hKEY, NULL, NULL, NULL, &a3, &a1, NULL, &num, &a4, &a5, NULL, NULL ); + if ( hResult != ERROR_SUCCESS ) + { + RegCloseKey( hKEY ); + return FALSE; + } + + BYTE portName[15]; + memset( portName, 0, 15 ); + + CString csr = _T( "" ); + + for ( DWORD i = 0 ; i < num ; ++i ) + { + aa = 30 ; + cbData_1 = 10; + hResult = ::RegEnumValue( hKEY, i, strInf, &aa, NULL, &type_1, portName, &cbData_1 ); + if ( hResult != ERROR_SUCCESS ) + { + continue; + } + csr.Format( _T( "%s" ), portName ); + + csr.Delete( 0, 3 ); + + pPortList[portNumber] = atoi( csr ); + + ++portNumber; //ϵͳõĴ + + ++nComNum; + } + RegCloseKey( hKEY ); + return TRUE; +} + + +//жϴǷռУڿ÷true򷵻false +bool OnCheckComPort( const CString& portName ) +{ + CString str = _T( "//./" ) + portName; + HANDLE hCom = CreateFile( str, //򿪴1 + GENERIC_READ | GENERIC_WRITE, //д + 0, //ռʽ + 0, OPEN_EXISTING, //һڵĴ + 0, 0 ); + + + if ( hCom == INVALID_HANDLE_VALUE ) //򿪴ʧ + { + return false; + } + else + { + CloseHandle( hCom ); + hCom = NULL; + return true; + } +} + + +//жϴǷΪ +//Ϊշtrue,򷵻false +bool CheckComPortIsEmpty( const CString strPort ) +{ + if ( strPort.Compare( _T( "" ) ) == 0 ) + { + return true; + } + return false; +} + +//ܣ2ǷͬͬTrue򷵻false +bool CompareTwoComPort( const CString port1, const CString port2 ) +{ + if ( ( port1.Compare( port2 ) ) == 0 ) + { + return true; + } + else + { + return false; + } +} + +//жϴǷ +//÷true,򷵻false +bool CheckComPortCanWork( const CString strPort ) +{ + if ( strPort.GetLength() <= 4 ) + { + return false; + } + + CString str = strPort; + str.Delete( 0, 4 ); //ɾڡַ + + CString strSelectCom = _T( "" ); + strSelectCom.Format( "COM%d", atoi( str ) ); + + if ( !OnCheckComPort( strSelectCom ) ) //ڱռãfalse + { + return false; + } + else //ڿãtrue + { + return true; + } +} + +//жϴǷȷȷΪXXǰΪڡΪ +//ȷtrue, 򷵻false +bool CheckComPortName( const CString strPort ) +{ + if ( strPort.GetLength() < 5 ) + { + return false; + } + CString str = strPort; + + if ( str.Left( 4 ) != _T( "" ) ) + { + return false; + } + str = strPort; + str.Delete( 0, 4 ); + + for ( int i = 0; i < str.GetLength(); ++i ) + { + if ( ( str.GetAt( i ) < '0' ) || ( str.GetAt( i ) > '9' ) ) + { + return false; + } + } + + return true; +} +//ӴнвңҳļõĴں +//룺portArray鳤arrLengthԪitemValue +//Ԫصλpos +//ֵҳɹtrue򷵻false +bool FindItemFromComList( int& pos, const int *portArray, const int& arrLength, const int& itemValue ) +{ + for ( int i = 0; i < arrLength; ++i ) + { + if ( itemValue == portArray[i] ) + { + pos = i; + return true; + } + } + + return false; +} + + diff --git a/Src/CH91PayloadSoftware/ComControlFunction.h b/Src/CH91PayloadSoftware/ComControlFunction.h new file mode 100644 index 0000000..c55fad4 --- /dev/null +++ b/Src/CH91PayloadSoftware/ComControlFunction.h @@ -0,0 +1,41 @@ +//ܣʵִڲһЩ + + +#ifndef COM_CONTROL_FUNCTION_H +#define COM_CONTROL_FUNCTION_H + + +//ϵͳõĴںţеĴںűpPortList +//portNumberںpPortList +//pPortListڵĴ +extern BOOL ScanPCCom( int *pPortList, int& portNumber ); + +//жϴǷռУڿ÷true򷵻false +extern bool OnCheckComPort( const CString& portName ); + + +//ܣ2ǷͬͬTrue򷵻false +extern bool CompareTwoComPort( const CString port1, const CString port2 ); + +//жϴǷ +//÷true,򷵻false +extern bool CheckComPortCanWork( const CString strPort ); + +//жϴǷΪ +//Ϊշtrue,򷵻false +extern bool CheckComPortIsEmpty( const CString strPort ); + +//жϴǷȷȷΪXX +//ȷtrue, 򷵻false +extern bool CheckComPortName( const CString strPort ); + +//ӴнвңҳļõĴں +//룺portArray鳤arrLengthԪitemValue +//Ԫصλpos +//ֵҳɹtrue򷵻false +extern bool FindItemFromComList( int& pos, const int *portArray, const int& arrLength, const int& itemValue ); + + +const int MaxComPortNumber = 1024; + +#endif \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/DlgIMP.cpp b/Src/CH91PayloadSoftware/DlgIMP.cpp new file mode 100644 index 0000000..fc019df --- /dev/null +++ b/Src/CH91PayloadSoftware/DlgIMP.cpp @@ -0,0 +1,134 @@ +// DlgIMP.cpp : ʵļ +// + +#include "stdafx.h" +#include "CH91PayloadSoftware.h" +#include "DlgIMP.h" +#include "afxdialogex.h" + +// CDlgIMP Ի + +IMPLEMENT_DYNAMIC(CDlgIMP, CDialogEx) + +CDlgIMP::CDlgIMP() + : CDialogEx(CDlgIMP::IDD) +{ +} + +CDlgIMP::~CDlgIMP() +{ +} + +void CDlgIMP::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CDlgIMP, CDialogEx) + ON_BN_CLICKED(IDC_BUTTON1, &CDlgIMP::OnBnClickedButton1) + + ON_MESSAGE(WM_UPDATE_IMP_SERIAL_CONNECT, ImpSerialConnectMessage) //IMPͨſʼϢ + ON_MESSAGE(WM_UPDATE_IMPDOWN_CHECKED, OnUpdateIMPDownDataChecked) //IMPң +END_MESSAGE_MAP() +BOOL CDlgIMP::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + g_IMPDLGhwnd = GetSafeHwnd(); + return TRUE; +} + +// DlgIMP Ϣ +void CDlgIMP::SetIMPData(CFrameIMPDown_ data) +{ + CString tstr; + tstr.Format(_T("%d"),data.Data.Bytes); + GetDlgItem(IDC_EDIT2)->SetWindowTextA(tstr); + + +} + + +void CDlgIMP::OnBnClickedButton1() +{ + // TODO: ڴӿؼ֪ͨ +} + +//IMPݺ󣬽У +void OnReadFromCommIMP( char *buffer,const DWORD size) +{ + //buffer = (unsigned char*)buffer; + const BYTE* buffer2 = (BYTE*)buffer; + if(size>0) + { + BYTE DCBufferCmd[6]; + memset(DCBufferCmd,0,sizeof(DCBufferCmd)); + DCBufferCmd[0] = buffer2[0] ; + DCBufferCmd[1] = buffer2[1] ; + DCBufferCmd[2] = buffer2[2] ; + int a = sizeof(buffer2); + /********У飬Уͨ͸g_FrameIMPDownֵ********/ + g_FrameIMPDown.Phrase(buffer2, size); + + ::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMPDOWN_CHECKED,0,0); + } +} +LRESULT CDlgIMP::ImpSerialConnectMessage(WPARAM param, LPARAM lparam) +{ + // жش + if (TRUE == m_SerialIMP.IsInitialized()) + { + m_SerialIMP.DeInit(); + } + else + { + //ͨ + char pSerialPort[20];//ں + DWORD pSerialPortBaud;//˿ں + memset(pSerialPort, 0, 20); + + /*ԶϢCStringʱϢʱ·ʽ + //::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMP_SERIAL_CONNECT,(WPARAM)mComPortIMP.AllocSysString(), (LPARAM)mComBaudIMP.AllocSysString()); + //ʱ·ʽWPARAMתCSTring + */ + CString sPort = (CString)((BSTR)param); + CString sBaud = (CString)((BSTR)lparam); + SysFreeString((BSTR)param); + SysFreeString((BSTR)lparam); + + + GetSerialPortNumber(pSerialPort,sPort); + pSerialPortBaud = atoi(sBaud);// + + if (!OnCheckComPort(pSerialPort)) //ڱռãfalse + { + return 0; + } + if(m_SerialIMP.Initialize(pSerialPort, pSerialPortBaud, 8, 0, 0)) //ͨ + { + m_SerialIMP.SetComReadCallback( OnReadFromCommIMP ); + //m_SerialIMP.SetNotCheckCallback(nullptr,NULL); + BYTE buffersend[10]; + memset(buffersend,1,10); + m_SerialIMP.WriteABuffer(buffersend,sizeof(buffersend)); + } + return 0; + } + + +} + +//ͨУIMP +LRESULT CDlgIMP::OnUpdateIMPDownDataChecked(WPARAM param, LPARAM lparam) +{ + //ݽʾ + //if(p_DlgIMP->IsWindowVisible()) + //{ + // p_DlgIMP->SetIMPData(g_FrameIMPDown); + //} + if(IMPDlgWindowVisible) + { + SetIMPData(g_FrameIMPDown); + } + return 0; +} \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/DlgIMP.h b/Src/CH91PayloadSoftware/DlgIMP.h new file mode 100644 index 0000000..1177117 --- /dev/null +++ b/Src/CH91PayloadSoftware/DlgIMP.h @@ -0,0 +1,36 @@ +#pragma once +#include "Global.h" +#include "resource.h" +#include "GlobalMessage.h" +#include "ComControlFunction.h" +#include "Serial.h" + +// CDlgIMP Ի + +class CDlgIMP : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgIMP) + +public: + CDlgIMP(); + virtual ~CDlgIMP(); + +// Ի + enum { IDD = IDD_DLG_IMP }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + + DECLARE_MESSAGE_MAP() +public: + void SetIMPData(CFrameIMPDown_ data); + afx_msg void OnBnClickedButton1(); + afx_msg LRESULT ImpSerialConnectMessage(WPARAM param, LPARAM lparam); //IMPͨſʼ + virtual BOOL OnInitDialog(); + + CSerial m_SerialIMP; // IMPͨŴ + char pSerialPort[20];//ں + DWORD pSerialPortBaud;//˿ں + //void onInitIMPFrame();//ʼIMPЭ + afx_msg LRESULT OnUpdateIMPDownDataChecked(WPARAM param, LPARAM lparam); //IMPͨУң +}; diff --git a/Src/CH91PayloadSoftware/FrameIMP_DOWN.cpp b/Src/CH91PayloadSoftware/FrameIMP_DOWN.cpp new file mode 100644 index 0000000..3bd1321 --- /dev/null +++ b/Src/CH91PayloadSoftware/FrameIMP_DOWN.cpp @@ -0,0 +1,110 @@ +#include "StdAfx.h" +#include "FrameIMP_Down.h" + +CFrameIMPDown_::CFrameIMPDown_(void) +{ + _tcscpy(Name, _T("IMP")); + FrameLength = 6; + HeadLength = 1; + Head[0] = 0x55; + memcpy(Addr(), Head, HeadLength); + CheckLength = 1; + CheckPos = FrameLength - 2; + + memset(&Data,0,sizeof(DataIMPDown)); + memset(recvDataValue, 0, 6); +} + + +CFrameIMPDown_::~CFrameIMPDown_(void) +{ +} + +BOOL CFrameIMPDown_::FullFrame() +{ + int HeaderPos, HeaderPos2; + HeaderPos = FindHead(0, Length() - HeadLength); //ҵһ֡ͷ + if (0 == HeaderPos) { + //֡ͷǰ + if (OnCheck()) //CRCУ + DoCheck(); + else { + if (Length() < FrameLength) //ݳȲ㣬δͨCRCУ + { + if (Size() < FrameLength) //룬δͨCRCУ + { + DoDropBYTE((UINT16)HeadLength); //֡ͷ + } + return TRUE; + } + else //룬δͨCRCУ + { + HeaderPos2 = FindHead(HeadLength, Length() - HeadLength); + if (HeaderPos2 >= 0) + { + Drop((UINT16) HeaderPos2); + return FALSE; + } + else + { + DoDropBYTE((UINT16) (Length()-(HeadLength-1))); + return TRUE; + } + } + } + } else if (HeaderPos < 0) { + //ûҵ֡ͷ + DoDropBYTE((UINT16) (Length()-(HeadLength-1))); + } else { + //֡ͷǰ + DoDropBYTE((UINT16) HeaderPos); + } + return FALSE; +} + +BOOL CFrameIMPDown_::OnCheck() +{ + //֡У + BYTE* p = Addr(); + memcpy(recvDataValue, p, 5); + if (Length() < FrameLength) + { + return false; + } + + struCHECK ck1=CheckCRC(p); + //if (p[CheckPos] == ck1.C0 && p[CheckPos + 1] == ck1.C1)//CRCУ + if (p[CheckPos] == ck1.C0 )//У + { + memcpy(recvDataValue, p, 5); + return true; + } + else + { + return false; + } +} + +void CFrameIMPDown_::DoCheck() +{ + CountFrameAll++; + CountFrameCheck++; + OnDataCheck(); + Drop(FrameLength); +} + +struCHECK CFrameIMPDown_::CheckCRC(BYTE* const p) +{ + return MakeCheckSum(p+1, FrameLength - HeadLength - CheckLength - 1);//1Ϊ֡βIMPһֽڵ֡β +} + +void CFrameIMPDown_::Decode() +{ + ProtocalIMPDown* pBuffIMP = (ProtocalIMPDown*)Addr(); + Data.head = pBuffIMP->head; + Data.Bytes = pBuffIMP->Bytes; + Data.StatusWord = pBuffIMP->StatusWord; + Data.FaultWord = pBuffIMP->FaultWord; + Data.CHKSUM = pBuffIMP->CHKSUM; + Data.EndFlag = pBuffIMP->EndFlag; +} \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/FrameIMP_DOWN.h b/Src/CH91PayloadSoftware/FrameIMP_DOWN.h new file mode 100644 index 0000000..21a8a29 --- /dev/null +++ b/Src/CH91PayloadSoftware/FrameIMP_DOWN.h @@ -0,0 +1,84 @@ + +#include "FrameRecieve.h" + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + + +#ifdef __WIN_32_VC__ +typedef unsigned char BYTE; +typedef unsigned char INT8U; +typedef unsigned short INT16U; +typedef unsigned int INT32U; +typedef char INT8S; +typedef short INT16S; +typedef int INT32S; +#endif + +#pragma pack(1) +//ӾͨЭ֡ +typedef struct struProtocalIMPDown{ + UINT8 head; //֡ͷ0x + UINT8 Bytes; //ֽ + UINT8 StatusWord; //״̬ + UINT8 FaultWord; // + UINT8 CHKSUM; //У + UINT8 EndFlag; //־ +}ProtocalIMPDown; +#pragma pack() + +//Ӿͨ֡ +typedef struct struDataIMPDown{ + UINT8 head; //֡ͷ0x + UINT8 Bytes; //Ԥ + UINT8 StatusWord; //״̬ + UINT8 FaultWord; // + UINT8 CHKSUM; //У + UINT8 EndFlag; //־ +}DataIMPDown; + +class CFrameIMPDown_ : public CFrameAbstract +{ +public: + CFrameIMPDown_(void); + ~CFrameIMPDown_(void); + +protected: + virtual BOOL FullFrame(); + + virtual BOOL OnCheck(); + void DoCheck(); + + virtual struCHECK CheckCRC(BYTE* const p); + + virtual void Decode(); + BYTE recvDataValue[6]; + +public: + DataIMPDown Data; //IMPЭ + +public: + float LimitedValueF(float val,float minimum, float maximum) + { + val = val>maximum?maximum:val; + val = valmaximum?maximum:val; + val = valmaximum?maximum:val; + val = val 0) { - g_UDPTrans2Server.WriteBuffer(Buffer + iTimes * 512, length%512); + // g_UDPTrans2Server.WriteBuffer(Buffer + iTimes * 512, length%512); } //g_UDPTrans2Server.WriteBuffer(buffer, length); @@ -373,7 +373,7 @@ void CALLBACK UDPRevTgtInfo(const void* buffer, int length, UINT32 data) } } -// CH96鲥 +// L鲥 void GetFH96DataFromNet() { // ʵʱ״̬ @@ -393,26 +393,30 @@ void GetFH96DataFromNet() &len); if (ret != SOCKET_ERROR) { + + + //if (g_udpStarted) + // { + // int iTimes = ret/512; + // for (int i = 0; i < iTimes; i++) + // { + // g_UDPTrans2Server.WriteBuffer(Buffer + i * 512, 512); + // } + // if (ret%512 > 0) + // { + // g_UDPTrans2Server.WriteBuffer(Buffer + iTimes * 512, ret%512); + // } + // + // //g_UDPTrans2Server.WriteBuffer(Buffer, ret); + // } + // SocketReceiveFH96Data(Buffer, ret); /*if (g_tcpStarted) { g_TCPTrans2Server.WriteBuffer(Buffer, ret); }*/ - if (g_udpStarted) - { - int iTimes = ret/512; - for (int i = 0; i < iTimes; i++) - { - g_UDPTrans2Server.WriteBuffer(Buffer + i * 512, 512); - } - if (ret%512 > 0) - { - g_UDPTrans2Server.WriteBuffer(Buffer + iTimes * 512, ret%512); - } - - //g_UDPTrans2Server.WriteBuffer(Buffer, ret); - } + } } } @@ -438,7 +442,7 @@ void SocketReceiveFH96Data(const void* buffer, int length) fwrite(buffer, static_cast(1), length, g_pFileSaveCH96txData); // д // ƶն˷ - //g_UdpSend2Mobile.WriteBuffer(buffer, length); + // g_UdpSend2Mobile.WriteBuffer(buffer, length); } } @@ -576,6 +580,7 @@ void ProcessCH96Data() if (g_CH96_h264decoder != nullptr) { g_CH96_h264decoder->decoding(midBuffer + 8, 248); + g_UDPTrans2Server.WriteBuffer(midBuffer + 8, 248); } /* if(g_tcpStarted==true){ @@ -2778,3 +2783,20 @@ void ProcessH264VideoData() } } } + +//ܣֻ㵽׼Ĵ +//룺ֵportID +//port +void GetSerialPortNumber(char *port, const CString portID) +{ + + CString strSerialPortNumber = portID; + strSerialPortNumber.Delete( 0, 4 ); + int ptNumber = atoi( strSerialPortNumber ); + + CString str = _T( "" ); + str.Format( "COM%d", ptNumber ); + + memcpy( port, str.GetBuffer( 255 ), str.GetLength() ); + str.ReleaseBuffer(); +} \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/Global.h b/Src/CH91PayloadSoftware/Global.h index 13e7548..be0ff31 100644 --- a/Src/CH91PayloadSoftware/Global.h +++ b/Src/CH91PayloadSoftware/Global.h @@ -4,6 +4,7 @@ #include "MUDP.h" #include "FrameFKU_Camera.h" + #define SAFE_DELETE(p) { if(p) { delete (p); (p) = nullptr; } } #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p) = nullptr; } } @@ -135,5 +136,4 @@ extern void GetH264VideoDataFromNet(); extern void SocketReceiveH264VideoData(const void* buffer, int length); extern void ProcessH264VideoData(); - - +extern void GetSerialPortNumber(char *port, const CString portID);//ֻ㵽׼Ĵ \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/GlobalMember.cpp b/Src/CH91PayloadSoftware/GlobalMember.cpp index 96e84f0..08a9c95 100644 --- a/Src/CH91PayloadSoftware/GlobalMember.cpp +++ b/Src/CH91PayloadSoftware/GlobalMember.cpp @@ -21,6 +21,7 @@ HWND g_JoyStickControlDlgHwnd = nullptr; HWND g_CH96CtrlDlgHwnd = nullptr; HWND g_MulticastSocketReceiveDlgHwnd = nullptr; HWND g_mapMatchDlg = nullptr; +HWND g_IMPDLGhwnd;//IMPھ // Ƶ ͼ洢ռ H264Decode g_EO_Decoder; @@ -466,4 +467,24 @@ HANDLE g_hMutex_ImgStitch = nullptr; std::deque g_StitchImgDeque; BOOL g_bRun = FALSE; -BOOL g_bStop = FALSE; +BOOL g_bStop = FALSE; + + +/*****IMP*****/ +CFrameIMPDown_ g_FrameIMPDown;//IMPЭʵ +bool IMPDlgWindowVisible;//IMPԻΪ״̬ +//CDlgIMP * g_DlgIMP;//IMPԻ +//б +CString gComBaudItems[BAUDITEMNUM] = +{ + "1200", + "2400", + "4800", + "9600", + "14400", + "19200", + "38400", + "56000", + "57600", + "115200" +}; \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/GlobalMember.h b/Src/CH91PayloadSoftware/GlobalMember.h index 3cf8286..225c9a1 100644 --- a/Src/CH91PayloadSoftware/GlobalMember.h +++ b/Src/CH91PayloadSoftware/GlobalMember.h @@ -10,6 +10,8 @@ using namespace cv; #include "QBStru.h" +#include "FrameIMP_DOWN.h" +#include "DlgIMP.h" // typedef unsigned __int8 UINT8; @@ -38,6 +40,7 @@ extern HWND g_JoyStickControlDlgHwnd; // ҡ extern HWND g_CH96CtrlDlgHwnd; // CH96ҳ extern HWND g_MulticastSocketReceiveDlgHwnd; // 鲥ھ extern HWND g_mapMatchDlg; +extern HWND g_IMPDLGhwnd;//IMPھ // Ƶ ͼ洢ռ @@ -486,3 +489,13 @@ extern std::deque g_StitchImgDeque; extern BOOL g_bRun; extern BOOL g_bStop; + +/*****IMP*****/ +extern CFrameIMPDown_ g_FrameIMPDown;//IMPЭʵ +extern bool IMPDlgWindowVisible;//IMPԻΪ״̬ +//extern CDlgIMP* g_DlgIMP;//IMPԻ +// +const unsigned BAUDITEMNUM =10; //Ŀ +const unsigned NCOUNTER=500; //ʧܳԴ +//б +extern CString gComBaudItems[BAUDITEMNUM]; \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/GlobalMessage.h b/Src/CH91PayloadSoftware/GlobalMessage.h index dfa7e58..85403a3 100644 --- a/Src/CH91PayloadSoftware/GlobalMessage.h +++ b/Src/CH91PayloadSoftware/GlobalMessage.h @@ -92,4 +92,8 @@ const UINT WM_OUTPUT_IMG = WM_USER + 6006; const UINT WM_OUTPUT_QUADRANGLE = WM_USER + 6007; +//IMP +#define WM_UPDATE_IMPDOWN_CHECKED WM_USER + 7008 +#define WM_UPDATE_IMP_SERIAL_CONNECT WM_USER + 7009 + #endif \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/IMPConect.cpp b/Src/CH91PayloadSoftware/IMPConect.cpp new file mode 100644 index 0000000..1cc5512 --- /dev/null +++ b/Src/CH91PayloadSoftware/IMPConect.cpp @@ -0,0 +1,12 @@ +#include "StdAfx.h" +#include "IMPConect.h" + + +IMPConect::IMPConect(void) +{ +} + + +IMPConect::~IMPConect(void) +{ +} \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/IMPConect.h b/Src/CH91PayloadSoftware/IMPConect.h new file mode 100644 index 0000000..dd13dda --- /dev/null +++ b/Src/CH91PayloadSoftware/IMPConect.h @@ -0,0 +1,7 @@ +#pragma once +class IMPConect +{ +public: + IMPConect(void); + ~IMPConect(void); +}; \ No newline at end of file diff --git a/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.cpp b/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.cpp index 71e0fb9..754404d 100644 --- a/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.cpp +++ b/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.cpp @@ -33,6 +33,8 @@ IMPLEMENT_DYNAMIC(CMulticastSocketReceiveDlg, CDialogEx) CMulticastSocketReceiveDlg::CMulticastSocketReceiveDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CMulticastSocketReceiveDlg::IDD, pParent) , m_iVideoSrc(0) + , mComPortIMP(_T("")) + , mComBaudIMP(_T("")) { //, mStrCDPayLoadIPAddr(_T("0.0.0.0")) @@ -55,7 +57,9 @@ CMulticastSocketReceiveDlg::CMulticastSocketReceiveDlg(CWnd* pParent /*=NULL*/) //ͨUDP m_strSACUDPIPAddr = ""; m_nSACUDPRemotePort = 2203; - m_nSACUDPLocalPort = 8002; + m_nSACUDPLocalPort = 8009; + + m_sysSetComNumber = 0;//ܿ } CMulticastSocketReceiveDlg::~CMulticastSocketReceiveDlg() @@ -68,6 +72,10 @@ void CMulticastSocketReceiveDlg::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_IPADDRESS4,m_IPAddress_MultiCastIP); DDX_Radio(pDX, IDC_RADIO_L, m_iVideoSrc); + + DDX_CBString(pDX, IDC_COMBO_PORT_IMP, mComPortIMP); + DDX_CBString(pDX, IDC_COMBO_BAUD_IMP, mComBaudIMP); + } @@ -80,6 +88,12 @@ BEGIN_MESSAGE_MAP(CMulticastSocketReceiveDlg, CDialogEx) ON_BN_CLICKED(IDC_RADIO_L, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked) ON_BN_CLICKED(IDC_RADIO_SAC1, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked) ON_BN_CLICKED(IDC_RADIO_SAC2, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked) + + ON_CBN_SELCHANGE(IDC_COMBO_PORT_IMP, &CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP)//ں + ON_CBN_SELCHANGE(IDC_COMBO_BAUD_IMP, &CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP)// + ON_BN_CLICKED(IDC_BTN_IMP_SERIAL_CONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialConnect) + ON_BN_CLICKED(IDC_BTN_IMP_SERIAL_DISCONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialDisconnect) + END_MESSAGE_MAP() BOOL CMulticastSocketReceiveDlg::OnInitDialog() @@ -102,10 +116,15 @@ BOOL CMulticastSocketReceiveDlg::OnInitDialog() // ðť״̬ GetDlgItem(IDC_BTN_MULTISOCKET_CONNECT)->EnableWindow(TRUE); - m_strServerPayLoadIPSend = _T("123.57.54.1"); + m_strServerPayLoadIPSend = _T("192.168.1.20"); // udpתķIP m_nServerSendLocalPort = 60302; - m_nServerSendObjectPort = 11302; + m_nServerSendObjectPort = 13001; // Զ˶˿ + + //Ӵںŵб + AddPortNumberToComboBox(); + //Ӳʵб + AddBaudNumberToComboBox(); return TRUE; // return TRUE unless you set the focus to a control // 쳣: OCX ҳӦ FALSE @@ -444,12 +463,12 @@ void CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked() { // ȡIPʾ CString str_LocalIP_Receive; - str_LocalIP_Receive = _T("192.168.0.4"); + str_LocalIP_Receive = _T("192.168.0.4"); // չʾͨIP GetDlgItem(IDC_EDIT_LOCALIP_RECEIVE)->SetWindowText(str_LocalIP_Receive); // ýʼʾ CString str_RemoteIP_Connect; - str_RemoteIP_Connect = _T("192.168.0.180"); + str_RemoteIP_Connect = _T("192.168.0.180"); // չʾIP m_IPAddress_MultiCastIP.SetWindowText(str_RemoteIP_Connect); GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->SetWindowText("8080"); GetDlgItem(IDC_EDIT_LOCALPORT_RECEIVE)->SetWindowTextA("8080"); @@ -461,7 +480,7 @@ void CMulticastSocketReceiveDlg::CreateUDPSocketReceiveData() { //ͨUDP m_nSACUDPSocket.SetCallBack(OnReadFromUDPSACKU, this); - CString strLocalIPAddr = _T("192.168.0.4"); + CString strLocalIPAddr = _T("192.168.1.20"); // ͨIP m_nSACUDPSocket.SetParams(strLocalIPAddr, m_nSACUDPLocalPort, m_strSACUDPIPAddr, m_nSACUDPRemotePort); if (m_nSACUDPSocket.StartListening()) { @@ -480,3 +499,187 @@ void CMulticastSocketReceiveDlg::CreateUDPSocketReceiveData() ShowMulticastSocketInfoReceive(); } } + +//ϵͳڵѡ +void CMulticastSocketReceiveDlg::AddPortNumberToComboBox() +{ + int *comPortList = new int[MaxComPortNumber]; + memset( comPortList, 0, MaxComPortNumber ); + + //ϵͳõĴĿ + int sysSetComNumber = 0; + + //ϵͳǰĴcomPortList + BOOL bScanPort = ScanPCCom( comPortList, sysSetComNumber ); + m_sysSetComNumber = sysSetComNumber; + + if ( !bScanPort ) //ȡʧ + { + if ( comPortList != NULL ) + { + delete[]comPortList; + comPortList = NULL; + } + return; + } + + // + OrderComPortList( comPortList, sysSetComNumber ); + + //дԻCComboBox + CString str; + for ( int i = 0; i < sysSetComNumber; ++i ) + { + str.Format( "%d", comPortList[i] ); + + ( ( CComboBox * ) GetDlgItem( IDC_COMBO_PORT_IMP ) )->InsertString( i, str ); //IMPں + } + + int setComPos = 0; + + //ļ + SetComboBoxCurSel( IDC_COMBO_PORT_IMP, comPortList, sysSetComNumber, mComPortIMP ); + + if ( comPortList != NULL ) + { + delete[]comPortList; + comPortList = NULL; + } +} + +//Ӵڲʵѡ +void CMulticastSocketReceiveDlg::AddBaudNumberToComboBox() +{ + int iCount0=( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->GetCount(); //IMPڲ + if(iCount0 < 1) + { + for(int i = 0; i < BAUDITEMNUM; ++i ){ + ( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->InsertString( i, gComBaudItems[i] ); + } + } + + //ļõSD2 + SetComboBaudCurSel( IDC_COMBO_BAUD_IMP, gComBaudItems, BAUDITEMNUM, mComBaudIMP ); + +} + +//ļжȡָں +void CMulticastSocketReceiveDlg::SetComboBoxCurSel( int comboBoxID, const int *portArray, const int& arrLength,CString& strPortNumber ) +{ + if ( strPortNumber.GetLength() <= 4 ) + { + strPortNumber = _T( "" ); + return; + } + + CString initializeComPort = strPortNumber; + initializeComPort.Delete( 0, 4 ); + int filePortValue = atoi( initializeComPort ); + + int setComPos = 0; + if ( FindItemFromComList( setComPos, portArray, arrLength, filePortValue ) ) + { + ( ( CComboBox * ) GetDlgItem( comboBoxID ) )->SetCurSel( setComPos ); + } + else + { + strPortNumber = _T( "" ); + } +} + +//Դ +void CMulticastSocketReceiveDlg::OrderComPortList( int *portArray, const int& arrLength ) +{ + int portValue = 0; + for ( int i = 0; i < arrLength - 1; ++i ) + { + for ( int j = i + 1; j < arrLength; ++j ) + { + if ( portArray[i] > portArray[j] ) + { + portValue = portArray[i]; + portArray[i] = portArray[j]; + portArray[j] = portValue; + } + } + } +} + +//ָIJϿ趨ѡֵ +void CMulticastSocketReceiveDlg::SetComboBaudCurSel( int comboBoxID, const CString *baudArray, const int& arrLength,CString& strBaudNumber ) +{ + if ( strBaudNumber.GetLength() <= 0 ) + { + strBaudNumber = _T( "" ); + return; + } + + CString initializeComBaud = strBaudNumber; + initializeComBaud.Trim(); + + int fileBaudValue = atoi( initializeComBaud ); + + int setBaudPos = -1; + + if ( FindItemFromBaudList( setBaudPos, baudArray, arrLength, fileBaudValue ) ) + { + ( ( CComboBox * ) GetDlgItem( comboBoxID ) )->SetCurSel( setBaudPos ); + } + else + { + strBaudNumber = _T( "" ); + } +} + +//Ӳбвָ +bool CMulticastSocketReceiveDlg::FindItemFromBaudList( int& pos, const CString *baudArray, const int& arrLength, const int& itemValue ) +{ + for ( int i = 0; i < arrLength; ++i ) + { + if ( itemValue == atoi((baudArray[i])) ) + { + pos = i; + return true; + } + } + return false; +} + +//IMPͨŴѡ󴥷 +void CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP() +{ + UpdateData( true ); + //жϸôǷѾռ + if ( !CheckComPortCanWork( mComPortIMP ) ) + { + ( ( CComboBox * ) GetDlgItem( IDC_COMBO_PORT_IMP ) )->SetCurSel( -1 ); + } +} +//IMPͨŴڲѡ󴥷 +void CMulticastSocketReceiveDlg::OnCbnSelchangeBaudIMP() +{ + UpdateData( true ); + //жϸôǷѾռ + if ( !CheckComPortCanWork( mComPortIMP ) ) + { + ( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->SetCurSel( -1 ); + } +} +void CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialConnect() +{ + // TODO: ڴӿؼ֪ͨ + GetDlgItem(IDC_BTN_IMP_SERIAL_CONNECT)->EnableWindow(FALSE); + GetDlgItem(IDC_BTN_IMP_SERIAL_DISCONNECT)->EnableWindow(TRUE); + ::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMP_SERIAL_CONNECT,(WPARAM)mComPortIMP.AllocSysString(), (LPARAM)mComBaudIMP.AllocSysString()); + +} + + +void CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialDisconnect() +{ + // TODO: ڴӿؼ֪ͨ + GetDlgItem(IDC_BTN_IMP_SERIAL_CONNECT)->EnableWindow(TRUE); + GetDlgItem(IDC_BTN_IMP_SERIAL_DISCONNECT)->EnableWindow(FALSE); + ::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMP_SERIAL_CONNECT,(WPARAM)mComPortIMP.AllocSysString(), (LPARAM)mComBaudIMP.AllocSysString()); + +} diff --git a/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.h b/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.h index 98c7fcc..8c662ac 100644 --- a/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.h +++ b/Src/CH91PayloadSoftware/MulticastSocketReceiveDlg.h @@ -9,6 +9,8 @@ #include "afxwin.h" #include "afxcmn.h" #include "opencv2/core/core.hpp" +#include "ComControlFunction.h" + // CMulticastSocketReceiveDlg Ի class CMulticastSocketReceiveDlg : public CDialogEx @@ -81,4 +83,28 @@ public: int m_nSACUDPLocalPort; //ͨUDPض˿ CUDPSocket m_nSACUDPSocket; //ͨUDPͨ׽ void CreateUDPSocketReceiveData(); //ͨUDPͨŴ + + //IMP + CString mComPortIMP; //IMPͨŴں + CString mComBaudIMP; //IMPͨŴڲ + //const int MaxComPortNumber = 1024; + //const unsigned BAUDITEMNUM = 10; //Ŀ + //const unsigned NCOUNTER = 500; //ʧܳԴ +private: + //ϵͳڵѡ + void AddPortNumberToComboBox(); + void SetComboBoxCurSel( int comboBoxID, const int *portArray, const int& arrLength, CString& strPortNumber ); + void SetComboBaudCurSel( int comboBoxID, const CString *baudArray, const int& arrLength, CString& strBaudNumber ); + bool FindItemFromBaudList( int& pos, const CString *baudArray, const int& arrLength, const int& itemValue ); + void AddBaudNumberToComboBox(); + void OrderComPortList( int *portArray, const int& arrLength ); +public: + afx_msg void OnCbnSelchangePortIMP();//ںѡ񴥷 + afx_msg void OnCbnSelchangeBaudIMP();//ڲѡ񴥷 +private: + int m_sysSetComNumber; // + +public: + afx_msg void OnBnClickedBtnImpSerialConnect(); + afx_msg void OnBnClickedBtnImpSerialDisconnect(); }; diff --git a/Src/CH91PayloadSoftware/Serial.cpp b/Src/CH91PayloadSoftware/Serial.cpp index f06cd0a..9ed4292 100644 --- a/Src/CH91PayloadSoftware/Serial.cpp +++ b/Src/CH91PayloadSoftware/Serial.cpp @@ -218,9 +218,9 @@ BYTE parity ,У BYTE stopbits,ֹͣλ ֵ: BOOL ͣǷʼɹ ע: -޸ļ¼: : : ע: +޸ļ¼: : : ע:char *serial_port, -----------------------------------------------------------------------------*/ -BOOL CSerial::Initialize(char *serial_port, +BOOL CSerial::Initialize(PCTSTR serial_port, DWORD baud_rate/*=CBR_9600*/, BYTE byte_size/*=8*/, BYTE parity/*=PARITY_NONE*/, @@ -228,7 +228,12 @@ BOOL CSerial::Initialize(char *serial_port, { if(m_bIsInitialized) DeInit(); - m_hComHandle=CreateFile(serial_port, + + TCHAR name[256]; + _tcscpy(name, _T("\\\\.\\")); + _tcscat(name, serial_port); + + m_hComHandle=CreateFile(name, GENERIC_READ|GENERIC_WRITE, 0, 0, diff --git a/Src/CH91PayloadSoftware/Serial.h b/Src/CH91PayloadSoftware/Serial.h index 77d681a..1adac55 100644 --- a/Src/CH91PayloadSoftware/Serial.h +++ b/Src/CH91PayloadSoftware/Serial.h @@ -97,9 +97,9 @@ public: 4. parity ,У 5. stopbits,ֹͣλ - ֵ: BOOL ͣǷʼɹ + ֵ: BOOL ͣǷʼɹchar *serial_port, */ - BOOL Initialize(char *serial_port, + BOOL Initialize(PCTSTR serial_port, DWORD baud_rate = CBR_9600, BYTE byte_size = 8, BYTE parity = NOPARITY, diff --git a/Src/CH91PayloadSoftware/basetype.h b/Src/CH91PayloadSoftware/basetype.h index 000417f..b088f8e 100644 --- a/Src/CH91PayloadSoftware/basetype.h +++ b/Src/CH91PayloadSoftware/basetype.h @@ -233,4 +233,23 @@ inline struCHECK getCRC8(UINT8* data, int len) return ck; } +//У +//inline UINT8 MakeCheckSum(UINT8 *ptr, UINT8 len) +inline struCHECK MakeCheckSum(UINT8 *ptr, UINT8 len) +{ + UINT8 i; + UINT8 CK_A=0; + BYTE *pData = ptr; + + for (i=0; i < len; ++i ) + { + CK_A = CK_A + ptr[i]; + } + + //return CK_A; + struCHECK ck; + ck.C0=CK_A; + ck.C1=0x00; + return ck; +} #endif//_BASE_TYPE_H_ diff --git a/Src/CH91PayloadSoftware/bufferloop.h b/Src/CH91PayloadSoftware/bufferloop.h index 6c19845..af47aaa 100644 --- a/Src/CH91PayloadSoftware/bufferloop.h +++ b/Src/CH91PayloadSoftware/bufferloop.h @@ -66,9 +66,12 @@ public: memcpy(FBuffer, abl.FBuffer, FSize); } virtual ~CBufferLoop(){ + delete[] FBuffer; FBuffer = 0; - delete cs; + //by CYH עͻᱨԭδ֪ + //delete cs; + } CBufferLoop& operator=(const CBufferLoop& abl) { diff --git a/Src/CH91PayloadSoftware/resource.h b/Src/CH91PayloadSoftware/resource.h index 70dc4200e66fb503e85fa6a75fd6519c6ddd15f5..c33093b0df0f275beece73e55b070e4036d58522 100644 GIT binary patch delta 826 zcmZ{iUr1A77{?k&-o9(y_jUX_w3(3rudC^7bh%O?cx`>dF<5n@m zi*+8n=tfMs=%R~LU)^*eE(i)0azcM#**4TE`DYs;;Z^6)j?_h0AK&kJ-uHXYd7oD+ zWe4pQ6#ej6V2_cUcZ3kKWE;zv3>`10u;26U$yYMt z#^QB-je0K%jo{-()VVmc4O?k)>}?CCKby*x9#_Z(a+-ulCpksBP?)L0wb{sj)TaxF z#08eVoBeeF(}O02BaKMU86f=N(7$ZM~FhDPH)t~9LMmPS~*ST{XOKI9G6}>IC2OvpE{zBUhLvj kwOx+UMbh!FTGmQ}^kd$~pts2ZOK}q6?h5&|BUSAC0~w)9`~Uy| delta 255 zcmZo^WZCqLc|(raW(DzUYLgeN65E_%cR^+Hlw`HZ3eqf_lahZKY?hl^#xyygNnmr# zj9q4vXYJydTz5WTv(|-k!joRgY%X{b!Z=ys*^bEzk~lWoJkMa<^iqUzbHOVqMxY4W z$}KH-J@%z2jj73W!Xe^xgwZdwp0mdBO*w%~2nBF-|V{95dPB zjl^V!FD{cGe2D>KiOCzjx=arE24O3FcbR // Ϳؼ MFC ֧ +#include diff --git a/版本说明.txt b/版本说明.txt new file mode 100644 index 0000000..b00c468 --- /dev/null +++ b/版本说明.txt @@ -0,0 +1,3 @@ +202401221 +增加IMP对话框 +增加IMP上下行通信连接 \ No newline at end of file