当前位置: 代码迷 >> PB >> 这个VB函数如何改为PB函数
  详细解决方案

这个VB函数如何改为PB函数

热度:138   发布时间:2016-04-29 09:24:47.0
这个VB函数怎么改为PB函数
函数说明:
. DSSendData(unsigned char *pPhone,u16t len,u8t * buf);
功能:向指定电话号码的Dtu发送数据
参数:
  pPhone:指向Dtu的11位电话号码的指针。
len:待发送的数据长度(字节数),数据长度必须小于或等于1450个字节
buf:待发送的数据


VC中的调用:
BOOL DSSendData (unsigned char *,u16t,u8t *);
DSSendData= \
(BOOL(*)(DtuInfoStruct*,u16t,u8t*))GetProcAddress(hDllModule,” DSSendData”);
if (DSSendData!=NULL)
{
  (*DSSendData)(szPhone, len,buf);



VB这样调用是成功的:
Function DSSendData Lib "gprsdll.dll" (ByVal id As Long, ByVal length As Integer, mess As Byte) As Long
Dim sendresult As Long '判断是否发送成功
Dim sendsrc(1 To 65535) As Byte '存储发送数据
  For i = 1 To sendsrclen
  If Asc(Mid(Text1.Text, i, 1)) <> 32 Then
  sendsrc(j + 1) = Val("&H" & Mid(Text1.Text, i, 2))
  i = i + 1
  j = j + 1
  End If
  Next i
sendresult = DSSendData(userid, sendsrclen, sendsrc(1)) '发送数据


改后的PB函数
第一种改法:
Function Long DSSendData(Long id, integer length,character mess) LIBRARY "GPRSDLL.DLL"  
第二种改法:
Function Long DSSendData(Long id, integer length,ref character mess) LIBRARY "GPRSDLL.DLL" ALIAS FOR "DSSendData;ANSI"
这两种改法调用时都不成功,调用过程如下:
VB这样调用是成功的
long sendresult //判断是否发送成功
character sendsrc[]//存储发送数据
integer sendsrclen// '发送数据长度
sendsrclen = Len(trim(sle_order.Text))
  For i = 1 To sendsrclen
  If Asc(Mid(Text1.Text, i, 1)) <> 32 Then
 sendsrc[j+1] = character(uo_bit.hex2int(Mid(sle_order.Text, i, 2)))
  i = i + 1
  j = j + 1
  End If
  Next i
sendresult = DSSendData(userid, sendsrclen, sendsrc(1)) '发送数据
请给予解答!


------解决方案--------------------
不懂,帮顶.
------解决方案--------------------
Function Long DSSendData(Long id, integer length,ref character mess[]) LIBRARY "GPRSDLL.DLL" ALIAS FOR "DSSendData;ANSI"

这样定义试试
  相关解决方案