读取控制卡文件、文件时间、文件大小
void CInfoStationDlg::OnBnClickedSignstat()
{
CString strip;
POSITION pos = m_listCtrlSign.GetFirstSelectedItemPosition() ;
if ( !pos)
{
MessageBox( " please Select Sign" , MB_OK );
return;
}
else
{
int nindex = m_listCtrlSign.GetNextSelectedItem( pos );
CSign *pSign = ( CSign * )m_listCtrlSign.GetItemData( nindex );
strip = pSign->GetIP();
}
CStringList CStrList;
CP5200_Net_Init( IPStringToValue( strip ) ,5200, IPStringToValue( _T("255.255.255.255")), 600 );// COM_Create();//网络初始化
if ( CP5200_Net_Connect() )
{
HOBJECT hObj = CP5200_CommData_Create( 1 , 0xff , IPStringToValue( "255.255.255.255" ) );//创建数据包对象
if(hObj)
{
int nNewSearch = 1;
BYTE szInfo[1024];
BYTE szBuf[1024]; //Max 512 files, each file 32 bytes
memset(szInfo, 0x00, sizeof(szInfo));
while(1)
{
int nDatLen = CP5200_MakeGetFileInfoData(hObj, szBuf, sizeof(szBuf), nNewSearch );//生成取得文件信息命令的数据
if ( nDatLen > 0 && 1 == CP5200_Net_Write(szBuf, nDatLen ) )// CP5200_Net_Write()利用网络写数据
{
nDatLen = CP5200_Net_Read(szBuf, sizeof(szBuf) );//接收数据
if ( nDatLen > 0 )
{
int nFilePos = 0;
int nFileCnt = CP5200_ParseGetFileInfoRet(hObj, szBuf, nDatLen , nFilePos, szInfo, sizeof(szInfo)); //返回文件数量
while( nFilePos++ < nFileCnt )
{
CString strText;
strText.Format("%s", (const char*)&szInfo[0]);//文件名(含扩展名)里面以0结束;
CStrList.AddTail( strText );
strText.Format("%02d%02d-%02d-%02d %02d:%02d:%02d", szInfo[45],szInfo[46],szInfo[47],szInfo[48],szInfo[49],szInfo[50],szInfo[51] );
CStrList.AddTail( strText );
strText.Format("%ld", *((long*)&szInfo[52]));//文件 szInfo[52]获取的是值,加上&是这个值的地址,就是指针指针,加上(long*)把这个指针转化成long型,在加上*取地址得到值;
CStrList.AddTail( strText );
if ( nFilePos < nFileCnt)
CP5200_ParseGetFileInfoRet(hObj, szBuf, nDatLen , nFilePos, szInfo, sizeof(szInfo));
}
nNewSearch = 0;//这里变成接着上面搜索。如果是1的话,就是从头开始搜索。
if ( nFileCnt < 4)
break;
}
}
}
CP5200_CommData_Destroy(hObj);
}
CP5200_Net_Disconnect();
}
DlgContrlCardInfo dlg( &CStrList );
dlg.DoModal();
}