谁有通过手机红外口通讯的例子?

myfault 2003-08-23 10:48:29
通过手机红外口发短信息,不虚拟串口,我已完成虚拟串口的。
...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chameleon 2003-08-25
  • 打赏
  • 举报
回复
发了几个网址给你,希望有帮助
柯本 2003-08-23
  • 打赏
  • 举报
回复
这是我去年编在PDA上的段红外线联的机的测试程序,后移到PC上,试过可用
不过程序找到到了,我记得有一个构件,继承TWSocket的,也我不到了(到网上搜一下)
你参考一下吧!
{
SOCKET sock;
WORD wVersionRequested;
WSADATA wsaData;
int err;
DEVICELIST dev; // Device list
int wd;
int count;
int index;
char buff[100];
CString x,t;



wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
MessageBox(L"WSAStartup error");
return;
}

if((sock=socket (AF_IRDA, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
MessageBox(L"socket error");
return;
}

SOCKADDR_IRDA ad = {AF_IRDA, 0, 0, 0, 0, "IrDA:IrCOMM"};

dev.numDevice = 0;
count=0;
wd=sizeof(dev);

while ( (dev.numDevice == 0) && (count <= 5))
{
// Retrieve the socket option.
if (getsockopt (sock, SOL_IRLMP, IRLMP_ENUMDEVICES,
(char *)&dev, &wd) == SOCKET_ERROR)
{
MessageBox(L"getsockopt error");
closesocket (sock);
return ;
}

count++;

// Wait one second before retrying.
Sleep (1000);
}

if (count > 5)
{
MessageBox (L"Server could not be located!") ;
closesocket (sock);
return ;
}

// Get the server socket address.
for (index = 0; index <= 3; index++)
{
ad.irdaDeviceID[index] = dev.Device[0].irdaDeviceID[index];
}


if (connect (sock, (struct sockaddr *)&ad,
sizeof (SOCKADDR_IRDA)) == SOCKET_ERROR)
{
MessageBox(L"connect error");
closesocket (sock);
return;
}
int Enable9WireMode=0;

if (setsockopt(sock, SOL_IRLMP, IRLMP_TINYTP_MODE ,
(char *) &Enable9WireMode, sizeof(int)) == SOCKET_ERROR )
{
MessageBox (L"setsockopt error!");
// closesocket (sock);
// return;

}

if (send (sock, "AT+CPBS=?\r", strlen ("AT+CPBS=?\r") , 0)
== SOCKET_ERROR)
{
MessageBox(L"send error");
closesocket (sock);
return;
}
if (recv (sock, buff, sizeof (buff), 0)== SOCKET_ERROR)
{
MessageBox(L"recv error");
closesocket (sock);
return;
}
x="";
for(index=0;index<=(int)strlen(buff);index++)
{
t.Format(L"%02x ", (unsigned char)buff[index]);
x+=t;
}
MessageBox(x);
/*///////////////////////again/
if (recv (sock, buff, sizeof (buff), 0)== SOCKET_ERROR)
{
MessageBox(L"recv error");
closesocket (sock);
return;
}
x="";
for(index=0;index<strlen(buff);index++)
{
t.Format(L"%02x ", (unsigned char)buff[index]);
x+=t;
}
MessageBox(x);
////////////////////////////////*/


closesocket (sock);
}

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧