diff --git a/q65w/CMakeLists.txt b/q65w/CMakeLists.txt index d14d91f47..c36921664 100644 --- a/q65w/CMakeLists.txt +++ b/q65w/CMakeLists.txt @@ -14,7 +14,7 @@ set (q65w_CXXSRCS ) if (WIN32) - set (q65w_CXXSRCS ${q65w_CXXSRCS} killbyname.cpp) + set (q65w_CXXSRCS ${q65w_CXXSRCS}) endif (WIN32) set (q65w_UISRCS diff --git a/q65w/about.cpp b/q65w/about.cpp index d77897c38..5ac318129 100644 --- a/q65w/about.cpp +++ b/q65w/about.cpp @@ -7,7 +7,7 @@ CAboutDlg::CAboutDlg(QWidget *parent) : ui(new Ui::CAboutDlg) { ui->setupUi(this); - ui->labelTxt->setText("<html><h2>" + QString {"MAP65 v" + ui->labelTxt->setText("<html><h2>" + QString {"Q65W v" + QCoreApplication::applicationVersion () + " " + revision ()}.simplified () + "</h2><br />" "Q65W is a wideband receiver for the Q65 protocol, <br />" diff --git a/q65w/killbyname.cpp b/q65w/killbyname.cpp deleted file mode 100644 index 11629e657..000000000 --- a/q65w/killbyname.cpp +++ /dev/null @@ -1,282 +0,0 @@ -#include <windows.h> -#include <tlhelp32.h> -#include <iostream> - -int killbyname(const char *szToTerminate) -// Created: 6/23/2000 (Ravi Kochhar) -// Last modified: 3/10/2002 (RK) -// Please report any problems or bugs to kochhar@physiology.wisc.edu -// The latest version of this routine can be found at: -// http://www.neurophys.wisc.edu/ravi/software/killproc/ -// Terminate the process "szToTerminate" if it is currently running -// This works for Win/95/98/ME and also Win/NT/2000/XP -// The process name is case-insensitive, i.e. "notepad.exe" and "NOTEPAD.EXE" -// will both work (for szToTerminate) -// Return codes are as follows: -// 0 = Process was successfully terminated -// 602 = Unable to terminate process for some other reason -// 603 = Process was not currently running -// 604 = No permission to terminate process -// 605 = Unable to load PSAPI.DLL -// 606 = Unable to identify system type -// 607 = Unsupported OS -// 632 = Invalid process name -// 700 = Unable to get procedure address from PSAPI.DLL -// 701 = Unable to get process list, EnumProcesses failed -// 702 = Unable to load KERNEL32.DLL -// 703 = Unable to get procedure address from KERNEL32.DLL -// 704 = CreateToolhelp32Snapshot failed - -{ - BOOL bResult,bResultm; - DWORD aiPID[1000],iCb=1000,iNumProc; //,iV2000=0; - DWORD iCbneeded,i,iFound=0; - char szName[MAX_PATH],szToTermUpper[MAX_PATH]; - HANDLE hProc,hSnapShot,hSnapShotm; - OSVERSIONINFO osvi; - HINSTANCE hInstLib; - int iLenP,indx; - HMODULE hMod; - PROCESSENTRY32 procentry; - MODULEENTRY32 modentry; - - // Transfer Process name into "szToTermUpper" and convert to upper case - iLenP=strlen(szToTerminate); - if(iLenP<1 || iLenP>MAX_PATH) return 632; - for(indx=0;indx<iLenP;indx++) - szToTermUpper[indx]=toupper(szToTerminate[indx]); - szToTermUpper[iLenP]=0; - - // PSAPI Function Pointers. - BOOL (WINAPI *lpfEnumProcesses)( DWORD *, DWORD cb, DWORD * ); - BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *, - DWORD, LPDWORD ); - DWORD (WINAPI *lpfGetModuleBaseName)( HANDLE, HMODULE, - LPTSTR, DWORD ); - - // ToolHelp Function Pointers. - HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD) ; - BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32) ; - BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32) ; - BOOL (WINAPI *lpfModule32First)(HANDLE,LPMODULEENTRY32) ; - BOOL (WINAPI *lpfModule32Next)(HANDLE,LPMODULEENTRY32) ; - - // First check what version of Windows we're in - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - bResult=GetVersionEx(&osvi); - if(!bResult) return 606; // Unable to identify system version - - // At Present we only support Win/NT/2000/XP or Win/9x/ME - // Seems to work OK in Win7 - if((osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) && - (osvi.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS)) return 607; - - if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT) - { - // Win/NT or 2000 or XP - - // Load library and get the procedures explicitly. We do - // this so that we don't have to worry about modules using - // this code failing to load under Windows 9x, because - // it can't resolve references to the PSAPI.DLL. - hInstLib = LoadLibraryA("PSAPI.DLL"); - if(hInstLib == NULL) return 605; - - // Get procedure addresses. - lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))(void (*)()) - GetProcAddress( hInstLib, "EnumProcesses" ) ; - lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, - DWORD, LPDWORD))(void (*)()) GetProcAddress( hInstLib, "EnumProcessModules" ) ; - lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, - DWORD )) (void (*)())GetProcAddress( hInstLib, "GetModuleBaseNameA" ) ; - - if(lpfEnumProcesses == NULL || lpfEnumProcessModules == NULL || - lpfGetModuleBaseName == NULL) { - FreeLibrary(hInstLib); - return 700; - } - - bResult=lpfEnumProcesses(aiPID,iCb,&iCbneeded); - if(!bResult) { - // Unable to get process list, EnumProcesses failed - FreeLibrary(hInstLib); - return 701; - } - - // How many processes are there? - iNumProc=iCbneeded/sizeof(DWORD); - - // Get and match the name of each process - for(i=0;i<iNumProc;i++) { - // Get the (module) name for this process - strcpy(szName,"Unknown"); - // First, get a handle to the process - hProc=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE, - aiPID[i]); - // Now, get the process name - if(hProc) { - if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) ) { - lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH); - } - } - CloseHandle(hProc); - // We will match regardless of lower or upper case - if(strcmp(_strupr(szName),szToTermUpper)==0) { - // Process found, now terminate it - iFound=1; - // First open for termination - hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]); - if(hProc) { - if(TerminateProcess(hProc,0)) { - // process terminated - CloseHandle(hProc); - FreeLibrary(hInstLib); - return 0; - } else { - // Unable to terminate process - CloseHandle(hProc); - FreeLibrary(hInstLib); - return 602; - } - } else { - // Unable to open process for termination - FreeLibrary(hInstLib); - return 604; - } - } - } - } - - if(osvi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) - { - // Win/95 or 98 or ME - - hInstLib = LoadLibraryA("Kernel32.DLL"); - if( hInstLib == NULL ) - return 702; - - // Get procedure addresses. - // We are linking to these functions of Kernel32 - // explicitly, because otherwise a module using - // this code would fail to load under Windows NT, - // which does not have the Toolhelp32 - // functions in the Kernel 32. - lpfCreateToolhelp32Snapshot= - (HANDLE(WINAPI *)(DWORD,DWORD))(void (*)()) - GetProcAddress( hInstLib, - "CreateToolhelp32Snapshot" ) ; - lpfProcess32First= - (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)()) - GetProcAddress( hInstLib, "Process32First" ) ; - lpfProcess32Next= - (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)()) - GetProcAddress( hInstLib, "Process32Next" ) ; - lpfModule32First= - (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)()) - GetProcAddress( hInstLib, "Module32First" ) ; - lpfModule32Next= - (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)()) - GetProcAddress( hInstLib, "Module32Next" ) ; - if( lpfProcess32Next == NULL || - lpfProcess32First == NULL || - lpfModule32Next == NULL || - lpfModule32First == NULL || - lpfCreateToolhelp32Snapshot == NULL ) - { - FreeLibrary(hInstLib); - return 703; - } - - // The Process32.. and Module32.. routines return names in all uppercase - - // Get a handle to a Toolhelp snapshot of all the systems processes. - - hSnapShot = lpfCreateToolhelp32Snapshot( - TH32CS_SNAPPROCESS, 0 ) ; - if( hSnapShot == INVALID_HANDLE_VALUE ) - { - FreeLibrary(hInstLib); - return 704; - } - - // Get the first process' information. - procentry.dwSize = sizeof(PROCESSENTRY32); - bResult=lpfProcess32First(hSnapShot,&procentry); - - // While there are processes, keep looping and checking. - while(bResult) - { - // Get a handle to a Toolhelp snapshot of this process. - hSnapShotm = lpfCreateToolhelp32Snapshot( - TH32CS_SNAPMODULE, procentry.th32ProcessID) ; - if( hSnapShotm == INVALID_HANDLE_VALUE ) - { - CloseHandle(hSnapShot); - FreeLibrary(hInstLib); - return 704; - } - // Get the module list for this process - modentry.dwSize=sizeof(MODULEENTRY32); - bResultm=lpfModule32First(hSnapShotm,&modentry); - - // While there are modules, keep looping and checking - while(bResultm) - { - if(strcmp(modentry.szModule,szToTermUpper)==0) - { - // Process found, now terminate it - iFound=1; - // First open for termination - hProc=OpenProcess(PROCESS_TERMINATE,FALSE,procentry.th32ProcessID); - if(hProc) - { - if(TerminateProcess(hProc,0)) - { - // process terminated - CloseHandle(hSnapShotm); - CloseHandle(hSnapShot); - CloseHandle(hProc); - FreeLibrary(hInstLib); - return 0; - } - else - { - // Unable to terminate process - CloseHandle(hSnapShotm); - CloseHandle(hSnapShot); - CloseHandle(hProc); - FreeLibrary(hInstLib); - return 602; - } - } - else - { - // Unable to open process for termination - CloseHandle(hSnapShotm); - CloseHandle(hSnapShot); - FreeLibrary(hInstLib); - return 604; - } - } - else - { // Look for next modules for this process - modentry.dwSize=sizeof(MODULEENTRY32); - bResultm=lpfModule32Next(hSnapShotm,&modentry); - } - } - - //Keep looking - CloseHandle(hSnapShotm); - procentry.dwSize = sizeof(PROCESSENTRY32); - bResult = lpfProcess32Next(hSnapShot,&procentry); - } - CloseHandle(hSnapShot); - } - if(iFound==0) - { - FreeLibrary(hInstLib); - return 603; - } - FreeLibrary(hInstLib); - return 0; -} diff --git a/q65w/mainwindow.cpp b/q65w/mainwindow.cpp index d260e1456..f30de8180 100644 --- a/q65w/mainwindow.cpp +++ b/q65w/mainwindow.cpp @@ -23,7 +23,7 @@ int iqAmp; int iqPhase; qint16 id[2*60*96000]; -QSharedMemory mem_m65("mem_m65"); +//QSharedMemory mem_m65("mem_m65"); extern const int RxDataFrequency = 96000; @@ -110,28 +110,6 @@ MainWindow::MainWindow(QWidget *parent) : xSignalMeter = new SignalMeter(ui->xMeterFrame); xSignalMeter->resize(50, 160); -#ifdef WIN32 - while(true) { - int iret=killbyname("m65.exe"); - if(iret == 603) break; - if(iret != 0) msgBox("KillByName return code: " + QString::number(iret)); - } -#endif - - if(!mem_m65.attach()) { - if (!mem_m65.create(sizeof(datcom_))) { - msgBox("Unable to create shared memory segment."); - } - } - char *to = (char*)mem_m65.data(); - int size=sizeof(datcom_); - if(datcom_.newdat==0) { - int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768; - to += noffset; - size -= noffset; - } - memset(to,0,size); //Zero all decoding params in shared memory - fftwf_import_wisdom_from_filename (QDir {m_appDir}.absoluteFilePath ("map65_wisdom.dat").toLocal8Bit ()); readSettings(); //Restore user's setup params @@ -980,17 +958,9 @@ void MainWindow::decode() //decode() datcom_.junk1=1234; //Cecck for these values in m65 datcom_.junk2=5678; -// char *to = (char*)mem_m65.data(); char *to = (char*) datcom2_.d4; char *from = (char*) datcom_.d4; - int size=sizeof(datcom_); - if(datcom_.newdat==0) { - int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768; - to += noffset; - from += noffset; - size -= noffset; - } - memcpy(to, from, qMin(mem_m65.size(), size-4)); + memcpy(to, from, sizeof(datcom_)); datcom_.nagain=0; datcom_.ndiskdat=0; m_map65RxLog=0; diff --git a/q65w/q65w.pro b/q65w/q65w.pro index 269b09818..8aa2c7fbf 100644 --- a/q65w/q65w.pro +++ b/q65w/q65w.pro @@ -35,10 +35,6 @@ SOURCES += main.cpp mainwindow.cpp plotter.cpp about.cpp \ astro.cpp displaytext.cpp getdev.cpp \ meterwidget.cpp signalmeter.cpp -win32 { -SOURCES += killbyname.cpp set570.cpp -} - HEADERS += mainwindow.h plotter.h soundin.h \ about.h devsetup.h widegraph.h getfile.h \ commons.h sleep.h astro.h displaytext.h \