|
100精币
BOOL CUSBRelayWnd::OnFindDeviceBtnClick( HELE hEle,HELE hEleEvent )
{
if (m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先关闭设备", L"提示", XMB_OK);
return TRUE;
}
if (m_pDeviceList)
{
usb_relay_device_free_enumerate(m_pDeviceList);
m_pDeviceList = NULL;
}
m_pDeviceList = usb_relay_device_enumerate();
if (m_pDeviceList)
{
struct usb_relay_device_info *cur_device = m_pDeviceList;
while (cur_device)
{
XComboBox_AddString( m_hDeviceListBox, (wchar_t*)(Ansi2WChar((char*)(cur_device->serial_number)).c_str()) );
m_mapIndexToDevice[Ansi2WChar((char*)(cur_device->serial_number))] = cur_device;
cur_device = cur_device->next;
}
}
return TRUE;
}
BOOL CUSBRelayWnd::OnOpenDeviceBtnClick( HELE hEle,HELE hEleEvent )
{
if (m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先关闭当前设备", L"提示", XMB_OK);
return TRUE;
}
int index = XComboBox_GetSelectItem(m_hDeviceListBox);
if (index > -1)
{
wchar_t *serial = XComboBox_GetItemText(m_hDeviceListBox, index);
std::map<wstring ,struct usb_relay_device_info*>::const_iterator fd = m_mapIndexToDevice.find(wstring(serial));
if (fd != m_mapIndexToDevice.end())
{
//1. open usb relay device
m_hCurDevice = usb_relay_device_open(fd->second);
if (m_hCurDevice)
{
//2. Get status
unsigned int status = 0;
if (0 == usb_relay_device_get_status(m_hCurDevice, &status))
{
for (int i = 0; i < fd->second->type; i++)
{
if ((1<<i) & status)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(0, 255, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i], TRUE);
}
}
XEle_SetBkColor(m_hOpenStatus, RGB(0, 255, 0));
XEle_RedrawEle(m_hOpenStatus, TRUE);
m_bOpened = TRUE;
m_hCureDeviceIndex = fd->second->type;
}
else
{
usb_relay_device_close(m_hCurDevice);
m_hCurDevice = 0;
XMessageBox(XEle_GetHWindow(hEle), L"打开设备错误!!", L"提示", XMB_OK);
}
}
else
{
XMessageBox(XEle_GetHWindow(hEle), L"打开设备错误!!", L"提示", XMB_OK);
}
}
else
{
XMessageBox(XEle_GetHWindow(hEle), L"你要打开的设备不存在", L"提示", XMB_OK);
}
}
else
{
XMessageBox(XEle_GetHWindow(hEle), L"选择你要打开的设备", L"提示", XMB_OK);
}
return TRUE;
}
BOOL CUSBRelayWnd::OnCloseDeviceBtnClick( HELE hEle,HELE hEleEvent )
{
if (!m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先打开设备", L"提示", XMB_OK);
return TRUE;
}
usb_relay_device_close(m_hCurDevice);
m_hCurDevice = 0;
m_bOpened = FALSE;
XEle_SetBkColor(m_hOpenStatus, RGB(255, 0, 0));
XEle_RedrawEle(m_hOpenStatus, TRUE);
for (int i = 0; i < m_hCureDeviceIndex; i++)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(255, 0, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i], TRUE);
}
return TRUE;
}
BOOL CUSBRelayWnd::OnOpenRelayBtnClick( HELE hEle, HELE hEleEvent )
{
if (!m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先打开设备", L"提示", XMB_OK);
return TRUE;
}
for (int i = 0; i < 8; i++)
{
if (hEle == m_hRelayOpenBtn[i])
{
int ret = usb_relay_device_open_one_relay_channel(m_hCurDevice, i+1);
if (ret == 0)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(0, 255, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i],TRUE);
}
}
}
return TRUE;
}
BOOL CUSBRelayWnd::OnCloseRelayBtnClick( HELE hEle, HELE hEleEvent )
{
if (!m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先打开设备", L"提示", XMB_OK);
return TRUE;
}
for (int i = 0; i < 8; i++)
{
if (hEle == m_hRelayCloseBtn[i])
{
int ret = usb_relay_device_close_one_relay_channel(m_hCurDevice, i+1);
if (ret == 0)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(255, 0, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i],TRUE);
}
}
}
return TRUE;
}
BOOL CUSBRelayWnd::OnOpenAllRelayBtnClick( HELE hEle, HELE hEleEvent )
{
if (!m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先打开设备", L"提示", XMB_OK);
return TRUE;
}
int ret = usb_relay_device_open_all_relay_channel(m_hCurDevice);
if (ret == 0)
{
for(int i = 0; i < m_hCureDeviceIndex; i++)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(0, 255, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i], TRUE);
}
}
return TRUE;
}
BOOL CUSBRelayWnd::OnCloseAllRelayBtnClick( HELE hEle, HELE hEleEvent )
{
if (!m_bOpened)
{
XMessageBox(XEle_GetHWindow(hEle), L"先打开设备", L"提示", XMB_OK);
return TRUE;
}
int ret = usb_relay_device_close_all_relay_channel(m_hCurDevice);
if (ret == 0)
{
for(int i = 0; i < m_hCureDeviceIndex; i++)
{
XEle_SetBkColor(m_hRelayStatusLabel[i], RGB(255, 0, 0));
XEle_RedrawEle(m_hRelayStatusLabel[i], TRUE);
}
}
return TRUE;
}
哪位大侠能抽空帮我转为易代码?
感谢,感谢!!!
|
|