¹Ø¼ü´Ê£ºDataSocket¼¼Êõ ÐéÄâÒÇÆ÷
ʱ¼ä£º2021-09-06 13:25:58 À´Ô´£ºÍøÂç
¡°Ò»¸ö´óµÄ¡¢¸´ÔӵIJâÊÔϵͳÆäÊý¾ÝµÄ²É¼¯ÊäÈË¡¢Êä³öºÍ·ÖÎö´¦ÀíÍùÍù·Ö²¼ÔÚ²»Í¬µÄµØÀíλÖÃÉÏ£¬´«Í³µÄ¼¯³É²âÊÔ·½·¨Ô½À´Ô½²»ÄÜÂú×㸴ÔÓ²âÊÔÈÎÎñµÄÐèÇó¡£Òò´Ë£¬ÍøÂ绯ÒÇÆ÷µÄ³öÏÖ³ÉΪ±ØÈ»¡£
¡±×÷ÕߣºÀîË®·¼£¬ÖìÈÙУ¬Ò¦Æô²Ö
Ò»¸ö´óµÄ¡¢¸´ÔӵIJâÊÔϵͳÆäÊý¾ÝµÄ²É¼¯ÊäÈË¡¢Êä³öºÍ·ÖÎö´¦ÀíÍùÍù·Ö²¼ÔÚ²»Í¬µÄµØÀíλÖÃÉÏ£¬´«Í³µÄ¼¯³É²âÊÔ·½·¨Ô½À´Ô½²»ÄÜÂú×㸴ÔÓ²âÊÔÈÎÎñµÄÐèÇó¡£Òò´Ë£¬ÍøÂ绯ÒÇÆ÷µÄ³öÏÖ³ÉΪ±ØÈ»¡£Ëæ×żÆËã»úÍøÂç¼¼Êõ¡¢×ÜÏß¼¼ÊõºÍÊý¾Ý¿â¼¼ÊõµÄ²»¶Ï·¢Õ¹£¬»¥ÁªÍøÊ¹Êý¾Ý¹²Ïí½øÈëÁËÒ»¸öеĽ׶Σ¬¼ÓËÙÁËÐéÄâÒÇÆ÷ÔÚÍøÂç¼°Ô¶³Ì¼ÆËã¼¼Êõ·½ÃæµÄ·¢Õ¹¡£ÐéÄâÒÇÆ÷¼¼Êõ½èÖú»¥ÁªÍøµÄÇ¿´ó¹¦ÄÜ£¬½«À´×Ô²âÁ¿»ò¿ØÖÆÉ豸ÖеÄÊý¾ÝÖ±½Ó·¢²¼µ½WebÍøÒ³ÉÏ£¬°Ñ·ÖÉ¢ÔÚ²»Í¬Î»ÖõIJ»Í¬É豸ÁªÏµÆðÀ´×é³ÉÒ»¸ö²âÊÔϵͳ£¬Ê¹×ÊÔ´µÃÒÔ¹²Ïí¡£
1 ÍøÂ绯ÐéÄâÒÇÆ÷
ÐéÄâÒÇÆ÷¼¼Êõ°Ñ¼ÆËã»ú¼¼ÊõºÍÒÇÆ÷¼¼ÊõÍêÃÀµÄ½áºÏÆðÀ´£¬¶øÍøÂ绯ÐéÄâÒÇÆ÷ÔòÊǰÑÐéÄâÒÇÆ÷¼¼ÊõºÍÃæÏòInternetµÄWeb¼¼Êõ½áºÏÆðÀ´Ëù²úÉúµÄÒ»ÖÖм¼Êõ¡£ÐÎÏóÒ»µã˵£¬ÐéÄâÒÇÆ÷°Ñ´«Í³ÒÇÆ÷µÄÇ°Ãæ°åÒÆÖ²µ½Á˼ÆËã»úÉÏ£¬ÀûÓüÆËã»úÉϵÄ×ÊÔ´½øÐвâÊÔ£¬¶øÍøÂ绯ÐéÄâÒÇÆ÷Ôò°ÑÇ°Ãæ°åÒÆÖ²µ½ÁËInternetÉÏ£¬Í¨¹ýWebä¯ÀÀÆ÷Ô¶³Ì¿ØÖÆÏÖ³¡µÄ²âÊÔÒÇÆ÷ºÍ¶ÔÏ󣬲âÊÔ½á¹ûºÍ²âÁ¿Êý¾Ý¿ÉÒÔͨ¹ýInternetʵʱµØ·¢²¼ºÍ¹²Ïí£¬´òÆÆÁËÔÚͬһµØµã½øÐвɼ¯¡¢·ÖÎöºÍÏÔʾµÄ´«Í³Ä£Ê½£¬ÔöÇ¿ÁË·Ö¹¤ºÏ×÷ÄÜÁ¦£¬´ó´óÌá¸ßÁ˹¤×÷ЧÂÊ¡£ÍøÂ绯ÐéÄâÒÇÆ÷µÄ½á¹¹Í¼Èçͼ1Ëùʾ¡£
2 DataSocket¼¼Êõ
ҪʵÏÖÐéÄâÒÇÆ÷ÔÚÍøÂçÆ½Ì¨ÉϵÄÓ¦Óã¬Ôò±ØÐëʵÏÖÔÚ²»Í¬Ó¦ÓÃÖ®¼äµÄÊý¾Ý¹²Ïí¡£ËäÈ»TCP£¯IP£¬DDEµÈ¼¼ÊõÖ§³Ö²»Í¬Ó¦ÓóÌÐò¼äµÄÊý¾Ý¹²Ïí£¬µ«²»ÄÜÓÃÀ´´«Ê䶯̬Êý¾Ý£¬¶øNI¹«Ë¾ÌṩµÄDataSocketÊÇרÃÅÓÃÀ´´«ÊäºÍ·¢²¼¶¯Ì¬Êý¾ÝµÄ£¬ÊÇÒ»ÖÖ»ùÓÚTCP£¯IP¹¤Òµ±ê×¼µÄÍøÉÏʵʱ¸ßËÙÊý¾Ý½»»»±à³Ìм¼Êõ£¬¶Ôµ×²ã½øÐÐÁ˸߶ȷâ×°£¬ÔÚ²»Í¬µÄÓ¦ÓÃÖ®¼ä´«ÊäÊý¾Ýʱ£¬²»±ØÎª²»Í¬µÄÊý¾Ý¸ñʽºÍͨÐÅÐÒé±àд¾ßÌåµÄ³ÌÐò´úÂ룬¼ò»¯ÁËÍøÉÏ²â¿ØÊý¾ÝµÄ±à³Ì¡£Í¼2ÊÇDataSocketµÄÌåϵ½á¹¹Í¼¡£
DataSocketÓÉDataSocket APIºÍDataSocket ServerÁ½²¿·Ö×é³É¡£DataSocket APIÊÇÒ»¸öºÍÐÒé¡¢±à³ÌÓïÑÔ¡¢²Ù×÷ϵͳÎ޹صÄÓ¦ÓóÌÐò½Ó¿Ú£¬Äܹ»°Ñ²âÁ¿Êý¾Ýת»¯ÎªÊʺÏÔÚÍøÂçÉÏ´«ÊäµÄÊý¾ÝÁ÷£¬Ëû°üÀ¨4¸ö»ù±¾¶¯×÷£ºopen£¬read£¬write£¬close£¬¿ÉÒÔ´ÓÒÔÏÂ5¸öµØ·½»ñÈ¡Êý¾Ý£º
£¨1£©Data items on HTTP servers
£¨2£©Data items on FTP servers
£¨3£©Local files
£¨4£©Data items on OLE for Process Control
£¨5£©Data items on DSTP servers
DataSocket ServerÊÇÒ»¸ö¶ÀÁ¢²¿·Ö£¬¿ÉÒÔ°ÑÏÖ³¡Êý¾Ý¸ßËÙ´«¸øÔ¶¶Ë¿Í»§¡£ÓÃDataSocket Server·¢²¼Êý¾ÝÐèÒª3¸ö²¿·Ö£º·¢²¼Õߣ¨publisher£©¡¢·þÎñÆ÷£¨DataSocket Server£©¡¢½ÓÊÕÕߣ¨subscriber£©£¬ÈýÕß¹ØÏµÈçͼ3Ëùʾ¡£·¢²¼Õßͨ¹ýDataSocket API°ÑÊý¾ÝдÈëDataSocket Server£¬½ÓÊÕÕßͨ¹ýDataSocket API´ÓDataSocket Server¶Á³öÊý¾Ý¡£·¢²¼ÕߺͽÓÊÕÕßÖ®¼ä¾ßÓÐʱЧÐÔ£¬½ÓÊÕÕßÖ»ÄܶÁµ½ÐÅÏ¢ÔËÐк󷢲¼Õß·¢À´µÄÊý¾Ý£¬´ËÊý¾Ý¿ÉÒÔ±»¶à´Î¶Áµ½¡£DataSocket Server Manager¶¨ÒåÁË×î´óÁ¬½ÓÊý£¬×î´óÊý¾Ý¶ÔÏó¸öÊý£¬¹æ¶¨ÁËÊý¾Ý·ÃÎʵÄȨÏÞ£¬¼´ÄÄЩ¼ÆËã»ú¿ÉÒÔ×÷Ϊ·¢²¼Õߣ¬ÄÄЩ¼ÆËã»ú¿ÉÒÔ×÷Ϊ½ÓÊÕÕß¡£ÕâÈý²¿·Ö¿ÉÒÔ´æÔÚÓÚһ̨װÖÃÖУ¬µ«¶àÊýÊÇ·Ö²¼ÔÚ²»Í¬µÄ×°ÖÃÖУ¬ÕâÑùÓÐÀûÓÚ¸ÄÉÆÏµÍ³ÐÔÄÜ£¬Ìá¸ß°²È«¶È¡£
DataSocketͨ¹ý URL£¨Uniform Resource Locator£©À´¶¨Î»Êý¾ÝÔ´ºÍÄ¿±ê¡£URI¡£µÄ²»Í¬Ç°×º±íʾÁ˲»Í¬µÄÊý¾ÝÀàÐÍ£ºfileΪ±¾µØÎļþ£¬httpΪ³¬Îı¾´«ÊäÐÒ飬dstp˵Ã÷À´×ÔDataSocket·þÎñÆ÷µÄʵʱÊý¾Ý£¬ftpΪÎļþ´«ÊäÐÒ飬opc±íʾ·ÃÎʵÄ×ÊÔ´ÊÇOPC¡£ÒÔÏÂÊǼ¸¸ö·ûºÏ¹æ¶¨µÄURL£º
dstp://mytestmachine/wavel
http://WWW.natinst.com/datasocket
3 Ó¦ÓÃʵÀý
ÏÖ¾ÙÀý˵Ã÷ÀûÓÃDataSocket¼¼ÊõʵÏÖÍøÂ绯ÐéÄâÒÇÆ÷¼ì²â¡£Ä³¹«Ë¾ÌṩάÐÞÓ°Ó¡»ú·þÎñ£¬ÔÚ¸÷µØÉèÓÐάÐÞ´¦£¬¸÷άÐÞ´¦°ÑÓ°Ó¡»úÐÅÏ¢¼°Ðͺŷ¢»Ø¸ø×ܲ¿£¬×ܲ¿¾¹ý·ÖÎöÕï¶Ïºó£¬ÔÙ°ÑÕï¶Ï½á¹û·¢¸øÎ¬ÐÞ´¦£¬ÒÔ±ãάÐÞÈËÔ±½øÐÐÐÞÀí¡£Õû¸ö¹¤×÷¹ý³ÌÈçÏ£ºÊ×ÏȰÑËùÓÐÕï¶Ï³ÌÐò·ÅÈËϵͳµÄDataSocket ServerÖУ¬LabWindows£¯CVIÓ¦ÓóÌÐòͨ¹ý´®¿ÚºÍÊý¾Ý²É¼¯°åÓëÓ°Ó¡»úÁ¬½ÓÆðÀ´ÒÔ»ñȡӰӡ»úµÄÓйØÐÅÏ¢£¬²¢Í¨¹ýDataSocket API°Ñ¸ÃÐÅÏ¢·¢Ë͸øDataSocket Server£¬ÏµÍ³ÖÐÑë³ÌÐòͨ¹ýDataSocket API¶ÁDataSocket Server£¬ÒÔ»ñȡӰӡ»úµÄÏà¹ØÐÅÏ¢ÒÔ¼°Ðͺţ¬Åжϵ÷ÓÃÄĸöÕï¶Ï³ÌÐò£¬È»ºó¼ì²â¹ÜÀí³ÌÐòÔËÐиÃÕï¶Ï³ÌÐò²¢°ÑÕï¶Ï½á¹ûдÈëDataSocket Server£¬LabWindows£¯CVIÓ¦ÓóÌÐò´ÓDataSocket ServerÖжÁÈ¡¸ÃÕï¶Ï½á¹û£¬Î¬ÐÞ¼¼ÊõÈËÔ±¾ÍÄÜÓôËÕï¶Ï½á¹ûÐÞÀíÓ°Ó¡»ú¡£ÒÔÏÂÊÇLabWindows£¯CVI²¿·ÖÔ´´úÂëʵÏÖÁ˶ÔDataSocketµÄ´ò¿ª¡¢¶Á¡¢¹Ø±Õ²Ù×÷£º
int CVICALLBACK connect£¨int panel£¬int control£¬int event£¬void*callbackData£¬int eventData£¡£¬int eventData2£©
{
switch£¨event£©
{
case EVENT_COMMIT
DS_Openconnection£¨¨•dstp£º£¯£¯localhost£¯testl¨•£¬
DSConst_ReadAutoUpdate£¬datahandle£¬DS_callback_NULL£©£»
break£»
}
return 0£»
}
Void DS_callback_read£¨DSHandle dshandle£¬int event£¬
void *callbackData£©£»
{
DS_GetDataValue£¨datahandle£¬CAVT_FLOAT£¬data£¬sizeof£¨double£©£¬&sz£¬&sz£©£»
}
int CVICALLBACK disconnect£¨int panel£¬int control£¬int event£¬void*callbackdata£¬int eventDatal£¬int eventData2£©£»
{
switch£¨event£©
{
case EVENT_COMMIT
DS_CloseConnection£¨datahandle£©£»
break£»
}
return 0£»
}
4 ½á Óï
×Ô20ÊÀ¼Í90Äê´úÒÔÀ´£¬ÒÇÆ÷µÄ¸ÅÄîÒѾÓÉ´«Í³Ä£Ê½ÒÇÆ÷·¢Õ¹³ÉΪÐéÄâÒÇÆ÷£¬¼´¡°Èí¼þ¼´ÒÇÆ÷¡±£¬¼Ì¶ø·¢Õ¹³ÉÎªÍøÂ绯ÐéÄâÒÇÆ÷£¬¼´¡°ÍøÂç¼´ÒÇÆ÷¡±¡£Ëæ×żÆËã»ú¼¼Êõ¡¢»¥ÁªÍø¡¢Êý¾Ý¿â¼¼ÊõµÄ²»¶Ï·¢Õ¹£¬ÍøÂ绯ÐéÄâÒÇÆ÷½«»á³ÉΪ½ñºóÒÇÆ÷·¢Õ¹·½ÏòµÄÖ÷Á÷£¬ÔÚ¸÷Ðи÷ÒµµÃµ½¹ã·ºÓ¦Óá£
·ÖÏíµ½£º
²ÂÄãϲ»¶