发表于:2009/12/28 11:58:54
#0楼
MX Component在BCB6上的使用問題
由於最近換了工作,所以就由VB轉戰到BCB6上
可是目前遇到個怪問題
void __fastcall TForm1::SaveBtnClick(TObject *Sender)
{
wchar_t wbuffer[64];
long BufferLen = StrToInt(LEdit_BlockNum->Text);
long nTemp[100];
long nError;
char cTemp[128];
AnsiString lRet;
for (int i=0 ;i<128;++i)
{
cTemp=NULL;
};
for (int i=0 ;i<64;++i)
{
wbuffer=NULL;
};
//初始化陣列
for (int I=0;I<BufferLen;++I)
{
nTemp[I]=I+1;
} ;
sprintf(cTemp, "%s", LEdit_BlockPLC->Text);
//將單字元改為雙字元
MultiByteToWideChar(CP_ACP, 0, cTemp,strlen(cTemp),wbuffer,sizeof(wbuffer));
nError = actU->WriteDeviceBlock(wbuffer, BufferLen, nTemp );
}
這段程式碼可以正確的把測試值寫入PLC也不會發生錯誤
但是怪就怪在其他如 ReadDeviceBlock,SetDevice,GetDevice都會錯誤
以下為程式碼
void __fastcall TForm1::SetBtnClick(TObject *Sender)
{
wchar_t wbuffer[64];
long nTemp;
long nError;
char cTemp[128] ;
AnsiString lRet;
for (int i=0 ;i<128;++i)
{
cTemp=NULL;
};
for (int i=0 ;i<64;++i)
{
wbuffer=NULL;
};
//將單字元改為雙字元
sprintf(cTemp, "%s", LEdit_SinPLC->Text.Trim());
MultiByteToWideChar(CP_ACP, 0, cTemp,strlen(cTemp),wbuffer,sizeof(wbuffer));
nTemp= 0xFEDE;
nError = actU->SetDevice( wbuffer, nTemp );
}
基本上可以說只有 Component指令部分有所改變,其餘差不多是相同的
想不通為什麼會這樣,麻煩各位前輩解答一下,謝謝
PLC為 三菱Q02
連接的模組為:QJ71E71-100
使用的元件為 ActQCPUQUSB及ActQJ71E71TCP(兩個都會發生相同的狀況)
發生的錯誤碼為:0x01802001
手冊上(簡體版)的錯誤敘述為:軟元件出錯,函數中指定的軟元件字符串未經批准
糾正方法為:檢查軟元件名
由於最近換了工作,所以就由VB轉戰到BCB6上
可是目前遇到個怪問題
void __fastcall TForm1::SaveBtnClick(TObject *Sender)
{
wchar_t wbuffer[64];
long BufferLen = StrToInt(LEdit_BlockNum->Text);
long nTemp[100];
long nError;
char cTemp[128];
AnsiString lRet;
for (int i=0 ;i<128;++i)
{
cTemp=NULL;
};
for (int i=0 ;i<64;++i)
{
wbuffer=NULL;
};
//初始化陣列
for (int I=0;I<BufferLen;++I)
{
nTemp[I]=I+1;
} ;
sprintf(cTemp, "%s", LEdit_BlockPLC->Text);
//將單字元改為雙字元
MultiByteToWideChar(CP_ACP, 0, cTemp,strlen(cTemp),wbuffer,sizeof(wbuffer));
nError = actU->WriteDeviceBlock(wbuffer, BufferLen, nTemp );
}
這段程式碼可以正確的把測試值寫入PLC也不會發生錯誤
但是怪就怪在其他如 ReadDeviceBlock,SetDevice,GetDevice都會錯誤
以下為程式碼
void __fastcall TForm1::SetBtnClick(TObject *Sender)
{
wchar_t wbuffer[64];
long nTemp;
long nError;
char cTemp[128] ;
AnsiString lRet;
for (int i=0 ;i<128;++i)
{
cTemp=NULL;
};
for (int i=0 ;i<64;++i)
{
wbuffer=NULL;
};
//將單字元改為雙字元
sprintf(cTemp, "%s", LEdit_SinPLC->Text.Trim());
MultiByteToWideChar(CP_ACP, 0, cTemp,strlen(cTemp),wbuffer,sizeof(wbuffer));
nTemp= 0xFEDE;
nError = actU->SetDevice( wbuffer, nTemp );
}
基本上可以說只有 Component指令部分有所改變,其餘差不多是相同的
想不通為什麼會這樣,麻煩各位前輩解答一下,謝謝
PLC為 三菱Q02
連接的模組為:QJ71E71-100
使用的元件為 ActQCPUQUSB及ActQJ71E71TCP(兩個都會發生相同的狀況)
發生的錯誤碼為:0x01802001
手冊上(簡體版)的錯誤敘述為:軟元件出錯,函數中指定的軟元件字符串未經批准
糾正方法為:檢查軟元件名