Доброго времени суток!
В свое время написал простенькое консольное приложение для проверки управления цифровыми TTL линиями платы L780 от L Card в легковесной IDE Dev-C++ 5.11 TDM-GCC 4.9.2. TTL логика работала хорошо.
Пришло время дописать, добавить интерфейс и тд. Но в Visual Studio 2008 как и в Qt MinGW 5.3.0, начиная с определенного момента, абсолютно тот же код, не работает как надо. Т.е. проходит инициализация платы, конфиг успешный, а значение по цифровым линиям не передается. При этом в Dev-C++ на этой же машине все работает хорошо.
Система Windows 7 x86.
В чем может быть проблема и как ее можно решить?
#define INITGUID
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <iomanip>
#include <objbase.h>
#include <math.h>
#include "include\ioctl.h"
#include "include\ifc_ldev.h"
#include "include\create.h"
using namespace std;
typedef IDaqLDevice* (*CREATEFUNCPTR) (ULONG Slot);
CREATEFUNCPTR CreateInstance;
HINSTANCE CallCreateInstance(char* name)
{
HINSTANCE hComponent = ::LoadLibraryA(name);
if(hComponent==NULL) { return 0; }
CreateInstance = (CREATEFUNCPTR)::GetProcAddress(hComponent,"CreateInstance");
if(CreateInstance==NULL) { return 0; }
return hComponent;
}
using namespace std;
int main(int argc, char *argv[])
{
PLATA_DESCR pd;
ULONG slot = 0;
SLOT_PAR sl;
ULONG status;
char confirm;
CallCreateInstance("lcomp.dll");
LUnknown* pIUnknown = CreateInstance(slot);
if(pIUnknown == NULL) { return 1; }
IDaqLDevice* pI;
HRESULT hr = pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
if(!SUCCEEDED(hr)) { return 1; }
pIUnknown->Release();
pI->OpenLDevice();
pI->LoadBios("l780");
pI->GetSlotParam(&sl);
pI->ReadPlataDescr(&pd);
if (sl.BoardType == PCIA || sl.BoardType == PCIB || sl.BoardType == PCIC)
{
cout << "Serial Number " << pd.SerNum << endl;
cout << "Board Name " << pd.BrdName <<endl;
cout << "Rev " << pd.Rev << endl;
}
ASYNC_PAR pp;
pp.s_Type = L_ASYNC_TTL_CFG;
pp.Mode = 1;
status = pI -> IoAsync(&pp);
if (status != L_SUCCESS) cout << "FAIL" << endl;
else cout << "ASYNC_TTL_CFG SUCCESS!" << endl;
cin >> confirm;
pp.s_Type = L_ASYNC_TTL_OUT;
pp.Data[0] = 0x0007;
pI -> IoAsync(&pp);
cin >> confirm;
pI->CloseLDevice();
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, вот есть у меня несколько экземпляров класса, могу ли я в цикле засунуть их в массив? к примеру
В C++ существует оператор reinterpret_cast, смысл которого заключается в приведении между типами, несовместимыми друг с другом
Где можно отредактировать вид таблицы в админке? В исходнике страницы указывается такой путь: