调用dll文件的代码是:
[DllImport("TCP102_SDK.dll", EntryPoint = "?TCP102_LedDisplay@@YGEPADEEPAUSTRUCT_LED_DISPLAY@@@Z")]
public unsafe static extern byte TCP102_LedDisplay(string ctr_ip, uint sequence, uint time_out, ref STRUCT_LED_DISPLAY led_dis);
dll里面的 TCP102_LedDisplay方法对应的代码是:
/******************************************************************************************************
Note(s) : None.
*******************************************************************************************************/
TCP102_SDK_API unsigned char __stdcall TCP102_LedDisplay(char *ctr_ip,unsigned char sequence,unsigned char time_out,STRUCT_LED_DISPLAY *led_dis)
{
unsigned char send_data[7+255];
unsigned char rev_data[7];
unsigned char result = 0;
unsigned int dis_data_num=0;
//检查参数
if((led_dis==NULL)||(led_dis->DisData==NULL))
{
return TCP102_ERR_PARAMETER;
}
//显示时,最多为128个字节
if(led_dis->DisDataLen>128)
{
return TCP102_ERR_PARAMETER;
}
//清零接收缓存数组
memset(rev_data, 0, 7);
//生成命令数据包
MakePacket(send_data, sequence, TCP102_CMD_LED_DIS, led_dis->DisDataLen, led_dis->DisData);
//向控制器发送命令数据包
result = SendPacketToController(send_data,7+led_dis->DisDataLen, rev_data,7, ctr_ip,time_out);
if(TCP102_ERR_OK!=result)
{
return result;
}
//如果命令发送成功,应答也接收成功,则对应答数据进行校验,并返回结果
if((TCP102_ERR_OK == CheckPacket(rev_data,7))&&(rev_data[3]==(TCP102_CMD_LED_DIS|0x80)))
{
if( (rev_data[2]==0x00) )//控制器执行命令成功
{
return TCP102_ERR_OK;
}
else//控制器执行命令失败
{
return TCP102_ERR_CTR_EXE_CMD_FAIL;
}
}
else//控制器返回的应答校验错误
{
return TCP102_ERR_ASK_CHECK;
}
}
我想要的结果就是第一张图片的里代码运行不报错,能正确运行。跪求大神帮忙啊!
内存指针没有正确使用造成的修改下你的程序看看呢
TCP102_LedDisplay ddl里面的函数无返回啊,你怎么还byte b=TCP102_LedDisplay?