• 驱动代码


       1 /*******************************************************************************
       2 ********************************************************************************
       3 **
       4 ** File Name
       5 ** ---------
       6 **
       7 ** aplink.c
       8 **
       9 ********************************************************************************
    
    
    1270 
    1271 /*------------------------------------------------------------------------------
    1272 ** aplink_RunCfgStateMachine()
    1273 **------------------------------------------------------------------------------
    1274 */
    1275 
    1276 void aplink_RunCfgStateMachine( void )
    1277 {
    1278    UTIL_BufMsgType*  psQEntry;
    1279    static UINT16     iMapCntr;
    1280    static UINT16     iSingleEntrySize;
    1281    UINT16*           piTemp;
    1282 
    1283 
    1284    switch( aplink_s.eCfgState )
    1285    {
    1286    case APLINK_CFG_SM_INIT:
    1287       /*
    1288       ** Initialise variables etc.
    1289       */
    1290 
    1291       aplink_s.psReadCfg   = NULL;
    1292       aplink_s.psWriteCfg  = NULL;
    1293 
    1294       aplink_s.iReadPdLength  = 0;
    1295       aplink_s.iWritePdLength = 0;
    1296 
    1297       aplink_s.eCfgState = APLINK_CFG_SM_READ_MODULE_TYPE;
    1298 
    1299       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_INIT." );
    1300       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_MODULE_TYPE." );
    1301 
    1302 
    1303       break; /* End case APLINK_CFG_SM_INIT: */
    1304 
    1305 
    1306    case APLINK_CFG_SM_READ_MODULE_TYPE:
    1307       /*
    1308       ** Allocate a buffer.
    1309       */
    1310 
    1311       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    1312                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    1313 
    1314       if( psQEntry == NULL )
    1315       {
    1316          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    1317       }
    1318 
    1319 
    1320       /*
    1321       ** Read the module type of the ABCC module.
    1322       */
    1323 
    1324       psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
    1325       psQEntry->sMsg.sHeader.bDestObj  = (UINT8)ABP_OBJ_NUM_ANB;
    1326       psQEntry->sMsg.sHeader.iInstance = 0x0001;
    1327       psQEntry->sMsg.sHeader.bCmd      = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
    1328       psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x00;
    1329       psQEntry->sMsg.sHeader.bCmdExt0  = (UINT8)ABP_ANB_IA_MODULE_TYPE;
    1330       psQEntry->sMsg.sHeader.bCmdExt1  = (UINT8)0x00;
    1331 
    1332       /*
    1333       ** Post the message to the ABCC.
    1334       */
    1335 
    1336       (void)aplink_AddFragAndPostMsg( psQEntry );
    1337 
    1338 
    1339       /*
    1340       ** Wait for the response.
    1341       */
    1342 
    1343       aplink_s.eCfgState = APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP;
    1344 
    1345       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP." );
    1346 
    1347       break; /* End case APLINK_CFG_SM_READ_MODULE_TYPE */
    1348 
    1349 
    1350    case APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP:
    1351       /*
    1352       ** Check if theres a new response for us.
    1353       */
    1354 
    1355       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    1356       {
    1357          /*
    1358          ** Decrease the number of messages that are processing...
    1359          */
    1360 
    1361          aplink_s.bNbrOfCmdsActiveToAbcc--;
    1362 
    1363 
    1364          /*
    1365          ** We have received a new message.
    1366          */
    1367 
    1368          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    1369              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_ANB ) &&
    1370              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    1371              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    1372              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    1373              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_ANB_IA_MODULE_TYPE_DS ) &&
    1374              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_ANB_IA_MODULE_TYPE ) &&
    1375              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
    1376          {
    1377             /*
    1378             ** Response is OK. Read the data attached.
    1379             */
    1380 
    1381             piTemp = (UINT16*)&psQEntry->sMsg.abData[ 0 ];
    1382             aplink_s.iModuleType = UTIL_WordToNative( *piTemp );
    1383 
    1384             ABCC_CbfDebugInfo( "APLINK/Configuration: Module type response received." );
    1385 
    1386             /*
    1387             ** Read the network data-type.
    1388             */
    1389 
    1390             aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_TYPE;
    1391 
    1392             ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_TYPE." );
    1393          }
    1394          else
    1395          {
    1396             /*
    1397             ** There is some error in the response.
    1398             */
    1399 
    1400             ABCC_CbfDebugInfo( "APLINK/Configuration: Module type error response." );
    1401 
    1402             /*
    1403             ** Signal a fatal error to the application
    1404             */
    1405 
    1406             ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_MODULE_TYPE_RECEIVED );
    1407 
    1408             /*
    1409             ** Change driver state, so the applicaton is able to send a RESET
    1410             */
    1411 
    1412             APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    1413 
    1414          } /* End ( Response is not OK? ) */
    1415 
    1416          /*
    1417          ** Free the allocated buffer.
    1418          */
    1419 
    1420          UTIL_FreeMsgBuffer( psQEntry );
    1421 
    1422       } /* End if( New message? ) */
    1423 
    1424       break; /* End case APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP: */
    1425 
    1426 
    1427    case APLINK_CFG_SM_READ_NW_TYPE:
    1428       /*
    1429       ** Allocate a buffer.
    1430       */
    1431 
    1432       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    1433                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    1434 
    1435       if( psQEntry == NULL )
    1436       {
    1437          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    1438       }
    1439 
    1440 
    1441       /*
    1442       ** Read the network type of the ABCC module.
    1443       */
    1444 
    1445       psQEntry->sMsg.sHeader.bSourceId  = (UINT8)0x01;
    1446       psQEntry->sMsg.sHeader.bDestObj   = (UINT8)ABP_OBJ_NUM_NW;
    1447       psQEntry->sMsg.sHeader.iInstance  = 0x0001;
    1448       psQEntry->sMsg.sHeader.bCmd       = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
    1449       psQEntry->sMsg.sHeader.bDataSize  = (UINT8)0x00;
    1450       psQEntry->sMsg.sHeader.bCmdExt0   = (UINT8)ABP_NW_IA_NW_TYPE;
    1451       psQEntry->sMsg.sHeader.bCmdExt1   = (UINT8)0x00;
    1452 
    1453 
    1454       /*
    1455       ** Post the message to the ABCC module.
    1456       */
    1457 
    1458       (void)aplink_AddFragAndPostMsg( psQEntry );
    1459 
    1460 
    1461       /*
    1462       ** Fetch the response.
    1463       */
    1464 
    1465       aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_TYPE_RSP;
    1466 
    1467       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_TYPE_RSP." );
    1468 
    1469       break; /* End case APLINK_CFG_SM_READ_NW_TYPE: */
    1470 
    1471 
    1472    case APLINK_CFG_SM_READ_NW_TYPE_RSP:
    1473       /*
    1474       ** Check if theres a new response for us.
    1475       */
    1476 
    1477       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    1478       {
    1479          /*
    1480          ** Decrease the number of messages that are processing...
    1481          */
    1482 
    1483          aplink_s.bNbrOfCmdsActiveToAbcc--;
    1484 
    1485 
    1486          /*
    1487          ** We have received a new message.
    1488          */
    1489 
    1490          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    1491              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
    1492              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    1493              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    1494              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    1495              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_NW_TYPE_DS ) &&
    1496              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_NW_TYPE ) &&
    1497              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
    1498          {
    1499             /*
    1500             ** Response is OK. Read the data attached.
    1501             */
    1502 
    1503             piTemp = (UINT16*)&psQEntry->sMsg.abData[ 0 ];
    1504             aplink_s.iNetworkType = UTIL_WordToNative( *piTemp );
    1505 //                         AT24CXX_WriteOneByte(10,aplink_s.iNetworkType);/* 引起死机 */
    1506                      fsmc_sram_test_write(aplink_s.iNetworkType,2);
    1507                      
    1508             ABCC_CbfDebugInfo( "APLINK/Configuration: Network type response received." );
    1509                      
    1510                      
    1511 
    1512             /*
    1513             ** Read the network parameter support.
    1514             */
    1515 
    1516             aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_PARAM_SUPPORT;
    1517 
    1518             ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_PARAM_SUPPORT." );
    1519 
    1520          }
    1521          else
    1522          {
    1523             /*
    1524             ** There is some error in the response.
    1525             */
    1526 
    1527             ABCC_CbfDebugInfo( "APLINK/Configuration: Network Type error response." );
    1528 
    1529             /*
    1530             ** Signal a fatal error to the application
    1531             */
    1532 
    1533             ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_NETWORK_TYPE_RECEIVED );
    1534 
    1535             /*
    1536             ** Change driver state, so the applicaton is able to send a RESET
    1537             */
    1538 
    1539             APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    1540 
    1541          } /* End if( Response OK? ) */
    1542 
    1543          /*
    1544          ** Free the allocated buffer.
    1545          */
    1546 
    1547          UTIL_FreeMsgBuffer( psQEntry );
    1548 
    1549       } /* End if( New message? ) */
    1550             
    1551 
    1552       break; /* End case APLINK_CFG_SM_READ_NW_TYPE_RSP: */
    1553 
    1554 
    1555    case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT:
    1556       /*
    1557       ** Allocate a buffer.
    1558       */
    1559 
    1560       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    1561                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    1562 
    1563       if( psQEntry == NULL )
    1564       {
    1565          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    1566       }
    1567 
    1568 
    1569       /*
    1570       ** Read the network parameter support of the ABCC module.
    1571       */
    1572 
    1573       psQEntry->sMsg.sHeader.bSourceId  = (UINT8)0x01;
    1574       psQEntry->sMsg.sHeader.bDestObj   = (UINT8)ABP_OBJ_NUM_NW;
    1575       psQEntry->sMsg.sHeader.iInstance  = 0x0001;
    1576       psQEntry->sMsg.sHeader.bCmd       = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
    1577       psQEntry->sMsg.sHeader.bDataSize  = (UINT8)0x00;
    1578       psQEntry->sMsg.sHeader.bCmdExt0   = (UINT8)ABP_NW_IA_PARAM_SUPPORT;
    1579       psQEntry->sMsg.sHeader.bCmdExt1   = (UINT8)0x00;
    1580 
    1581 
    1582       /*
    1583       ** Post the message to the ABCC module.
    1584       */
    1585 
    1586       (void)aplink_AddFragAndPostMsg( psQEntry );
    1587 
    1588 
    1589       /*
    1590       ** Fetch the response.
    1591       */
    1592 
    1593       aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP;
    1594 
    1595       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP." );
    1596 
    1597       break; /* End case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT: */
    1598 
    1599 
    1600    case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP:
    1601       /*
    1602       ** Check if theres a new response for us.
    1603       */
    1604 
    1605       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    1606       {
    1607          /*
    1608          ** Decrease the number of messages that are processing...
    1609          */
    1610 
    1611          aplink_s.bNbrOfCmdsActiveToAbcc--;
    1612 
    1613 
    1614          /*
    1615          ** We have received a new message.
    1616          */
    1617 
    1618          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    1619              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
    1620              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    1621              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    1622              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    1623              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_PARAM_SUPPORT_DS ) &&
    1624              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_PARAM_SUPPORT ) &&
    1625              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
    1626          {
    1627             /*
    1628             ** Response is OK. Read the data attached.
    1629             */
    1630 
    1631             aplink_s.bParamSupport = psQEntry->sMsg.abData[ 0 ];
    1632 
    1633             ABCC_CbfDebugInfo( "APLINK/Configuration: Parameter support response received." );
    1634 
    1635 
    1636             /*
    1637             ** Request pointers for the configuration.
    1638             */
    1639 
    1640             ABCC_CbfAutoCfgRequest( aplink_s.iModuleType,
    1641                                     aplink_s.iNetworkType,
    1642                                     aplink_s.bParamSupport,
    1643                                     &aplink_s.psReadCfg,
    1644                                     &aplink_s.psWriteCfg );
    1645 
    1646 
    1647             /*
    1648             ** Read the network data format support.
    1649             */
    1650 
    1651             aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_DATA_FORMAT;
    1652 
    1653             ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_DATA_FORMAT." );
    1654          }
    1655          else
    1656          {
    1657             /*
    1658             ** There is some error in the response.
    1659             */
    1660 
    1661             ABCC_CbfDebugInfo( "APLINK/Configuration: Parameter support error response." );
    1662 
    1663             /*
    1664             ** Signal a fatal error to the application
    1665             */
    1666 
    1667             ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_PARAM_SUPPORT_RECEIVED );
    1668 
    1669             /*
    1670             ** Change driver state, so the applicaton is able to send a RESET
    1671             */
    1672 
    1673             APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    1674 
    1675          } /* End if( Response OK? ) */
    1676 
    1677          /*
    1678          ** Free the allocated buffer.
    1679          */
    1680 
    1681          UTIL_FreeMsgBuffer( psQEntry );
    1682 
    1683       } /* End if( New message? ) */
    1684             
    1685 
    1686 
    1687       break; /* End case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP: */
    1688 
    1689 
    1690    case APLINK_CFG_SM_READ_NW_DATA_FORMAT:
    1691       /*
    1692       ** Allocate a buffer.
    1693       */
    1694 
    1695       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    1696                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    1697 
    1698       if( psQEntry == NULL )
    1699       {
    1700          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    1701       }
    1702 
    1703 
    1704       /*
    1705       ** Read the Network data format of the module.
    1706       */
    1707 
    1708       psQEntry->sMsg.sHeader.bSourceId  = (UINT8)0x01;
    1709       psQEntry->sMsg.sHeader.bDestObj   = (UINT8)ABP_OBJ_NUM_NW;
    1710       psQEntry->sMsg.sHeader.iInstance  = 0x0001;
    1711       psQEntry->sMsg.sHeader.bCmd       = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
    1712       psQEntry->sMsg.sHeader.bDataSize  = (UINT8)0x00;
    1713       psQEntry->sMsg.sHeader.bCmdExt0   = (UINT8)ABP_NW_IA_DATA_FORMAT;
    1714       psQEntry->sMsg.sHeader.bCmdExt1   = (UINT8)0x00;
    1715 
    1716       /*
    1717       ** Post the message to the ABCC.
    1718       */
    1719 
    1720       (void)aplink_AddFragAndPostMsg( psQEntry );
    1721 
    1722 
    1723       /*
    1724       ** Wait for the response.
    1725       */
    1726 
    1727       aplink_s.eCfgState = APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP;
    1728 
    1729       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP." );
    1730 
    1731       break; /* End case APLINK_CFG_SM_READ_NW_DATA_FORMAT: */
    1732 
    1733 
    1734    case APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP:
    1735       /*
    1736       ** Check if theres a new response for us.
    1737       */
    1738 
    1739       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    1740       {
    1741          /*
    1742          ** Decrease the number of messages that are processing...
    1743          */
    1744 
    1745          aplink_s.bNbrOfCmdsActiveToAbcc--;
    1746 
    1747 
    1748          /*
    1749          ** We have received a new message.
    1750          */
    1751 
    1752          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    1753              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
    1754              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    1755              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    1756              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    1757              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_DATA_FORMAT_DS ) &&
    1758              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_DATA_FORMAT ) &&
    1759              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
    1760          {
    1761             /*
    1762             ** Signal the network data format to the application.
    1763             */
    1764 
    1765             ABCC_CbfNetworkDataFormat( (ABCC_DataFormatType)psQEntry->sMsg.abData[ 0 ] );
    1766 
    1767             ABCC_CbfDebugInfo( "APLINK/Configuration: Network data-type response received." );
    1768 
    1769             iMapCntr = 0;
    1770 
    1771             /*
    1772             ** Change state
    1773             */
    1774 
    1775             aplink_s.eCfgState = APLINK_CFG_SM_NEXT_READ;
    1776 
    1777          }
    1778          else
    1779          {
    1780             /*
    1781             ** There is some error in the response.
    1782             */
    1783 
    1784             ABCC_CbfDebugInfo( "APLINK/Configuration: Network data-format error response." );
    1785 
    1786             /*
    1787             ** Signal a fatal error to the application
    1788             */
    1789 
    1790             ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_DATA_FORMAT_RECEIVED );
    1791 
    1792             /*
    1793             ** Change driver state, so the applicaton is able to send a RESET
    1794             */
    1795 
    1796             APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    1797 
    1798          } /* End if( New Message OK? ) */
    1799 
    1800          /*
    1801          ** Free the allocated buffer.
    1802          */
    1803 
    1804          UTIL_FreeMsgBuffer( psQEntry );
    1805 
    1806       } /* End if( New message? ) */
    1807             
    1808 
    1809                 ABCC_CbfCfgSetAddress( Network_Address());
    1810 
    1811       break; /* End case APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP: */
    1812 
    1813 
    1814    case APLINK_CFG_SM_SEND_READ_MAPPING:
    1815       /*
    1816       ** Allocate a buffer.
    1817       */
    1818 
    1819       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    1820                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    1821 
    1822       if( psQEntry == NULL )
    1823       {
    1824          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    1825       }
    1826 
    1827 
    1828       /*
    1829       ** Send a Read mapping message
    1830       */
    1831 
    1832       psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
    1833       psQEntry->sMsg.sHeader.bDestObj  = (UINT8)ABP_OBJ_NUM_NW;
    1834       psQEntry->sMsg.sHeader.iInstance = 0x0001;
    1835       psQEntry->sMsg.sHeader.bCmd      = (UINT8)( ABP_NW_CMD_MAP_ADI_READ_AREA | ABP_MSG_HEADER_C_BIT );
    1836       psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x04;
    1837       psQEntry->sMsg.sHeader.bCmdExt0  = (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF );
    1838       psQEntry->sMsg.sHeader.bCmdExt1  = (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF );
    1839 
    1840       /*
    1841       ** Assign the data type and the number of elements.
    1842       */
    1843 
    1844             if(fsmc_sram_test_read(2) == 0X90)
    1845             {
    1846         aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType = 0;
    1847                 aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements = 16;
    1848                  psQEntry->sMsg.abData[ 0 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType;
    1849                  psQEntry->sMsg.abData[ 1 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements;
    1850             }
    1851             else
    1852             {
    1853              psQEntry->sMsg.abData[ 0 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType;
    1854        psQEntry->sMsg.abData[ 1 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements;
    1855             }
    1856 //             printf("%2X
    ",psQEntry->sMsg.abData[ 0 ] );
    1857 //             printf("%2X
    ",psQEntry->sMsg.abData[ 1 ] );            
    1858 
    1859       /*
    1860       ** Assign the order number. Low byte first.
    1861       */
    1862 
    1863       psQEntry->sMsg.abData[ 2 ]  = (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iOrderNumber & 0x00FF );
    1864       psQEntry->sMsg.abData[ 3 ]  = (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iOrderNumber >> 8 ) & 0x00FF );
    1865 
    1866       /*
    1867       ** Store the number of bytes of this mapping.
    1868       */
    1869 
    1870       iSingleEntrySize = ( aplink_GetSizeOfDataType( aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType ) *
    1871                            aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements );
    1872 
    1873 
    1874       /*
    1875       ** Post the message to the ABCC.
    1876       */
    1877 
    1878       (void)aplink_AddFragAndPostMsg( psQEntry );
    1879 
    1880 
    1881       /*
    1882       ** Change state
    1883       */
    1884 
    1885       aplink_s.eCfgState = APLINK_CFG_SM_WAIT_READ_MAPPING_RSP;
    1886 
    1887       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_READ_MAPPING_RSP." );
    1888 
    1889       break; /* End case APLINK_CFG_SM_SEND_READ_MAPPING: */
    1890 
    1891 
    1892    case APLINK_CFG_SM_WAIT_READ_MAPPING_RSP:
    1893       /*
    1894       ** Waite for a response
    1895       */
    1896 
    1897       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    1898       {
    1899          /*
    1900          ** Decrease the number of messages that are processing...
    1901          */
    1902 
    1903          aplink_s.bNbrOfCmdsActiveToAbcc--;
    1904 
    1905 
    1906          /*
    1907          ** We have received a new message.
    1908          */
    1909 
    1910          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    1911              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
    1912              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    1913              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    1914              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    1915              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)0x01 ) &&
    1916              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF ) ) &&
    1917              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF ) ) )
    1918          {
    1919             ABCC_CbfDebugInfo( "APLINK/Configuration: Read map added OK." );
    1920 
    1921             /*
    1922             ** Response is OK. Read the data attached.
    1923             */
    1924 
    1925             aplink_s.psReadCfg->psMaps[ iMapCntr ].bAreaOffset = psQEntry->sMsg.abData[ 0 ];
    1926             aplink_s.psReadCfg->psMaps[ iMapCntr ].bMapStatus  = (UINT8)1;
    1927 
    1928             /*
    1929             ** Add the mapped data size.
    1930             */
    1931 
    1932             aplink_s.iReadPdLength += iSingleEntrySize;
    1933 
    1934          }
    1935          else
    1936          {
    1937             /*
    1938             ** Error in message
    1939             */
    1940 
    1941             ABCC_CbfDebugInfo( "APLINK/Configuration: Read map error." );
    1942 
    1943             /*
    1944             ** Response is NOT OK. Mark the mapping as not mapped.
    1945             */
    1946 
    1947             aplink_s.psReadCfg->psMaps[ iMapCntr ].bAreaOffset = (UINT8)0;
    1948             aplink_s.psReadCfg->psMaps[ iMapCntr ].bMapStatus  = (UINT8)0;
    1949 
    1950          } /* End if( correct message? ) */
    1951 
    1952 
    1953          /*
    1954          ** Increase the number of mappings.
    1955          */
    1956 
    1957          iMapCntr++;
    1958 
    1959 
    1960          /*
    1961          ** Check for more mappings.
    1962          */
    1963 
    1964          aplink_s.eCfgState = APLINK_CFG_SM_NEXT_READ;
    1965 
    1966 
    1967          /*
    1968          ** Free the allocated buffer.
    1969          */
    1970 
    1971          UTIL_FreeMsgBuffer( psQEntry );
    1972 
    1973       } /* End if( New Response? ) */
    1974 
    1975       break; /* End case APLINK_CFG_SM_WAIT_READ_MAPPING_RSP: */
    1976 
    1977 
    1978    case APLINK_CFG_SM_NEXT_READ:
    1979       /*
    1980       ** Check if there are more mappings.
    1981       */
    1982 
    1983       if( ( aplink_s.psReadCfg != NULL ) &&
    1984           ( aplink_s.psReadCfg->iNbrMaps != 0 ) &&
    1985           ( aplink_s.psReadCfg->iNbrMaps <= 256 ) &&
    1986           ( iMapCntr < aplink_s.psReadCfg->iNbrMaps ) )
    1987       {
    1988          /*
    1989          ** There are more "READ"-mappings left. Change state.
    1990          */
    1991 
    1992          aplink_s.eCfgState = APLINK_CFG_SM_SEND_READ_MAPPING;
    1993       }
    1994       else
    1995       {
    1996          /*
    1997          ** Check if there is a write mapping available
    1998          */
    1999 
    2000          if( ( aplink_s.psWriteCfg != NULL ) &&
    2001              ( aplink_s.psWriteCfg->iNbrMaps != 0 ) &&
    2002              ( aplink_s.psWriteCfg->iNbrMaps <= 256 ) )
    2003          {
    2004             /*
    2005             ** There are at least one write mapping available
    2006             */
    2007 
    2008             iMapCntr = 0;
    2009 
    2010             /*
    2011             ** Change state
    2012             */
    2013 
    2014             aplink_s.eCfgState = APLINK_CFG_SM_SEND_WRITE_MAPPING;
    2015 
    2016             ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_SEND_WRITE_MAPPING." );
    2017          }
    2018          else
    2019          {
    2020             /*
    2021             ** There are NO "WRITE"-mappings. Change driver state.
    2022             */
    2023 
    2024             APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    2025 
    2026 
    2027             /*
    2028             ** No read or write mapping available
    2029             */
    2030 
    2031             ABCC_CbfCfgCompleted();
    2032 
    2033          } /* End if write mapping OK? ) */
    2034 
    2035       } /* End if( More Read mappings? ) */
    2036 
    2037       break; /* End case APLINK_CFG_SM_NEXT_READ: */
    2038 
    2039 
    2040    case APLINK_CFG_SM_SEND_WRITE_MAPPING:
    2041       /*
    2042       ** Allocate a buffer.
    2043       */
    2044 
    2045       psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
    2046                                          ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
    2047 
    2048       if( psQEntry == NULL )
    2049       {
    2050          ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
    2051       }
    2052 
    2053 
    2054       /*
    2055       ** Send a Write mapping meassage
    2056       */
    2057 
    2058       psQEntry->sMsg.sHeader.bSourceId  = (UINT8)0x01;
    2059       psQEntry->sMsg.sHeader.bDestObj   = (UINT8)ABP_OBJ_NUM_NW;
    2060       psQEntry->sMsg.sHeader.iInstance  = 0x0001;
    2061       psQEntry->sMsg.sHeader.bCmd       = (UINT8)( ABP_NW_CMD_MAP_ADI_WRITE_AREA | ABP_MSG_HEADER_C_BIT );
    2062       psQEntry->sMsg.sHeader.bDataSize  = (UINT8)0x04;
    2063       psQEntry->sMsg.sHeader.bCmdExt0   = (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF );
    2064       psQEntry->sMsg.sHeader.bCmdExt1   = (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF );
    2065 
    2066       /*
    2067       ** Assign the data type and number of elements.
    2068       */
    2069 
    2070             if(fsmc_sram_test_read(2) == 0X90)
    2071             {
    2072                 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType = 0;
    2073                 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements = 16;
    2074                 psQEntry->sMsg.abData[ 0 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType;
    2075                 psQEntry->sMsg.abData[ 1 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements;
    2076             }
    2077      else
    2078             {
    2079                 psQEntry->sMsg.abData[ 0 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType;
    2080                 psQEntry->sMsg.abData[ 1 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements; 
    2081             }
    2082 
    2083       /*
    2084       ** Assign the order number. Low byte first.
    2085       */
    2086 
    2087       psQEntry->sMsg.abData[ 2 ]  = (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iOrderNumber & 0x00FF );
    2088       psQEntry->sMsg.abData[ 3 ]  = (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iOrderNumber >> 8 ) & 0x00FF );
    2089 
    2090 
    2091       /*
    2092       ** Store the number of bytes of this mapping.
    2093       */
    2094 
    2095       iSingleEntrySize = ( aplink_GetSizeOfDataType( aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType ) *
    2096                            aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements );
    2097 
    2098       /*
    2099       ** Post the message to the ABCC.
    2100       */
    2101 
    2102       (void)aplink_AddFragAndPostMsg( psQEntry );
    2103 
    2104 
    2105       /*
    2106       ** Change state
    2107       */
    2108 
    2109       aplink_s.eCfgState = APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP;
    2110 
    2111       ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP." );
    2112 
    2113       break; /* End case APLINK_CFG_SM_SEND_WRITE_MAPPING: */
    2114 
    2115 
    2116    case APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP:
    2117       /*
    2118       ** Waite for a response
    2119       */
    2120 
    2121       if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
    2122       {
    2123          /*
    2124          ** Decrease the number of messages that are processing...
    2125          */
    2126 
    2127          aplink_s.bNbrOfCmdsActiveToAbcc--;
    2128 
    2129 
    2130          /*
    2131          ** We have received a new message.
    2132          */
    2133 
    2134          if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
    2135              ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
    2136              ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
    2137              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
    2138              ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
    2139              ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)0x01 ) &&
    2140              ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF ) ) &&
    2141              ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF ) ) )
    2142          {
    2143             /*
    2144             ** Response is OK. Read the data attached.
    2145             */
    2146       
    2147             aplink_s.psWriteCfg->psMaps[ iMapCntr ].bAreaOffset = psQEntry->sMsg.abData[ 0 ];
    2148             aplink_s.psWriteCfg->psMaps[ iMapCntr ].bMapStatus  = (UINT8)1;
    2149 
    2150             /*
    2151             ** Add the mapped data size.
    2152             */
    2153 
    2154             aplink_s.iWritePdLength += iSingleEntrySize;
    2155 
    2156 
    2157             ABCC_CbfDebugInfo( "APLINK/Configuration: Write map OK." );
    2158          }
    2159          else
    2160          {
    2161             /*
    2162             ** Error in message
    2163             */
    2164 
    2165             ABCC_CbfDebugInfo( "APLINK/Configuration: Write map error." );
    2166 
    2167             /*
    2168             ** Response is NOT OK. Mark the map.
    2169             */
    2170 
    2171             aplink_s.psWriteCfg->psMaps[ iMapCntr ].bAreaOffset = (UINT8)0;
    2172             aplink_s.psWriteCfg->psMaps[ iMapCntr ].bMapStatus  = (UINT8)0;
    2173 
    2174          } /* End if( correct message? ) */
    2175 
    2176 
    2177          /*
    2178          ** Increase the number of mappings.
    2179          */
    2180 
    2181          iMapCntr++;
    2182 
    2183 
    2184          /*
    2185          ** Check if more mappings...
    2186          */
    2187 
    2188          aplink_s.eCfgState = APLINK_CFG_SM_NEXT_WRITE;
    2189 
    2190                     
    2191          /*
    2192          ** Free the allocated buffer.
    2193          */
    2194 
    2195          UTIL_FreeMsgBuffer( psQEntry );
    2196                  
    2197 //                      ABCC_CbfCfgSetAddress(Network_Address());
    2198 //                     ABCC_CbfCfgSetBand(Network_Band());   //这儿加的设置波特率的函数
    2199 
    2200       } /* End if( New Response? ) */
    2201 
    2202       break; /* End case APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP: */
    2203 
    2204 
    2205    case APLINK_CFG_SM_NEXT_WRITE:
    2206       /*
    2207       ** Check if there are more "WRITE"-mappings to process.
    2208       */
    2209 
    2210       if( iMapCntr < aplink_s.psWriteCfg->iNbrMaps )
    2211       {
    2212          /*
    2213          ** Change state
    2214          */
    2215 
    2216          aplink_s.eCfgState = APLINK_CFG_SM_SEND_WRITE_MAPPING;
    2217       }
    2218       else
    2219       {
    2220          /*
    2221          ** No more mappings to process.
    2222          ** Change driver state
    2223          */
    2224         
    2225          APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
    2226 
    2227          /*
    2228          ** No more mapping available
    2229          */
    2230                 
    2231                 
    2232 //        if(fsmc_sram_test_read(2) == 0X90)/*只有在模块是CC-Link时,才配置波特率*/
    2233 //         {
    2234                              
    2235 // //      }
    2236          ABCC_CbfCfgCompleted();
    2237 
    2238       } /* End if( More Write mappings? ) */
    2239 
    2240       break; /* End case APLINK_CFG_SM_NEXT_WRITE: */
    2241 
    2242 
    2243    default:
    2244 
    2245       /*
    2246       ** Signal a fatal error to the application
    2247       */
    2248 
    2249       ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_ILLEGAL_CFG_STATE );
    2250 
    2251       break;
    2252 
    2253    } /* End switch( aplink_s.eCfgState ) */
    2254 
    2255 } /* End of aplink_RunCfgStateMachine() */
    2256 
    2257 
    2258 /*------------------------------------------------------------------------------
    2259 ** aplink_HandleQueuedMsgsToAppl()
    2260 **------------------------------------------------------------------------------
    2261 */
    2262
     1 void ABCC_CbfCfgSetBand( UINT8 band )
     2 {
     3     
     4     /* Message Definition */
     5    ABP_MsgType sMsg;
     6    sMsg.sHeader.bSourceId = 4;// SourceId = 3
     7    sMsg.sHeader.bDestObj = 4;// Object Anybus Object (04h)
     8    sMsg.sHeader.iInstance = 2;// Instance = 1
     9    sMsg.sHeader.bCmd = 0x42;// Command, Set attribute
    10    sMsg.sHeader.bDataSize = 1;// Data size = 1 byte
    11    sMsg.sHeader.bCmdExt0 = 5;// Attribute = 5 ('setup Complete'-flag)
    12    sMsg.sHeader.bCmdExt1 = 0;// (reserved)
    13    sMsg.abData[ 0 ] = band;// Data
    14    ABCC_SendMessage( &sMsg ); // Send Message
    15 
    16 } /* End of  ABCC_CbfCfgSetBand() */  //设置波特率的函数

    /***************log******************************************************/

      1 成功打开串口监视, 进程: 14124    ABCC_Demo_v2.0.exe
      2 
      3 //Control register: bit7    bit6     bit5    bit4    bit3   bit2   bit1   bit0
      4             CTRL_T  CTRL_M   CTRL_R  CTRL_AUX   0     0      0      0
      5     
      6 //Status  register: bit7    bit6     bit5    bit4    bit3   bit2   bit1   bit0
      7            STAT_T  STAT_M   STAT_R  STAT_AUX  SUP    S2     S1     S0    
      8                             SETUP:   0      0      0
      9                            NW_INT:   0      0      1    
     10                          WAIT_PROCESS:   0      1      0
     11                              IDLE:   0      1      1 
     12                        PROCESS_ACTIVE:   1      0      0
     13                             ERROR:   1      0      1
     14                          reserved:   1      1      0
     15                         EXCEPTION:   1      1      1
     16 
     17 COM1: 打开                                            //COM1 Write为application向ABCC写数据,COM1 Read为ABCC向application写数据
     18 
     19             /**********SETUP状态开始**********/
     20 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08     //Initial Handshake, both app and module is ready
     21 COM1 Read(hex): 19(Bytes) A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     22 
     23 
     24 
     25 COM1 Write(hex): 19(Bytes)60 01 01 01 00 41 00 01 00 02 01 01 00 00 00 00 00 CE 65     //依次为:Control register 60, source ID 01, Object 01, instance number 00 01,
     26                                              41h为读命令,00指message无数据,attribute为00 01,查软件手册中对object 01,                                                 instance 01,attribute 01可知该message含义为读模块类型
     27 COM1 Read(hex): 19(Bytes) 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69     //no valid message but for ping_pong
     28 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08     //to end last command
     29 COM1 Read(hex): 19(Bytes) E0 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 65 1A     //response,0401h, indicate Anybus-CompactCom 
     30 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     31 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 59 4A     //to end last response
     32 
     33 
     34 
     35 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 01 00 02 01 01 00 00 00 00 00 27 86     //03(object), 00 01(instance),00 01(attribute). get network object, network                                                     type     attribute 
     36 COM1 Read(hex): 19(Bytes) A0 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 B1 2B 
     37 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     38 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 59 4A 
     39 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     40 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 4F DE     //0020h, indicate "DeviceNet" type
     41 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     42 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 73 8E 
     43 
     44 
     45 
     46 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 04 00 02 01 01 00 00 00 00 00 37 96     //03,01,04,get network object, Parameter Data support? 
     47 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 9B EF 
     48 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     49 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 73 8E 
     50 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     51 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 F0 C2     //response,01,true, "Network supports acyclic data access" 
     52 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     53 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 CC 92 
     54 
     55 
     56 
     57 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 03 00 02 01 01 00 00 00 00 00 ED 27     //03,00 01,00 03,get network object,Data format(LSB?MSB?) 
     58 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 24 F3 
     59 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     60 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 CC 92 
     61 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     62 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 E6 B2     //response, 00,LSB first 
     63 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     64 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 DA E2 
     65 
     66 
     67 
     68 COM1 Write(hex): 19(Bytes)60 01 03 01 00 51 04 03 00 05 01 03 00 00 00 00 00 CE D2     //command 11,Map_ADI_Read_Area,4 bytes message data,ADI number 00 03;Data Type                                                       Of the ADI:05(UINT16);Number of elements in the ADI:01;Order Number of the                                                     ADI:00 03, 2 bytes 
     69 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 DA E2 
     70 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     71 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 32 83 
     72 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     73 COM1 Read(hex): 19(Bytes) 60 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 F1 12     //response,Offset of the mapped ADI from start of the Write Process Data:00 03 
     74 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     75 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 CD 42 
     76 
     77 
     78 
     79 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 51 04 04 00 00 01 04 00 00 00 00 00 74 C3     //command 11,Map_ADI_Read_Area,4 bytes message data,ADI number 00 04;Data Type                                                       Of the ADI:00(BOOL8);Number of elements in the ADI:01;Order Number of the                                                     ADI:00 04, 1 byte
     80 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 CD 42 
     81 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     82 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 25 23 
     83 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     84 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 1A 43     //response,Offset of the mapped ADI from start of the Write Process Data:00 04  
     85 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     86 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 26 13 
     87 
     88 
     89 
     90 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 50 04 01 00 05 01 01 00 00 00 00 00 CD EE     //command 10,Map_ADI_Write_Area,4 bytes message data,ADI number 00 01;Data Type                                               Of the ADI:05(UINT16);Number of elements in the ADI:01;Order Number of the                                                       ADI:00 01, 2 bytes 
     91 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 CE 72 
     92 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     93 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 26 13 
     94 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
     95 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 10 2F     //response,Offset of the mapped ADI from start of the Write Process Data:00 01 
     96 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
     97 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 2C 7F 
     98 
     99 
    100 
    101 COM1 Write(hex): 19(Bytes)60 00 03 01 00 41 00 02 00 05 01 01 00 00 00 00 00 B6 97    //03,00 01,00 02, get Network type string  
    102 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 2C 7F 
    103 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    104 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 C4 1E 
    105 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    106 COM1 Read(hex): 19(Bytes) 60 00 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 71 F5    //response with "DeviceNet",fragment1 
    107 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    108 COM1 Read(hex): 19(Bytes) E0 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 BE B3    //response with "DeviceNet",fragment2  
    109 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    110 COM1 Read(hex): 19(Bytes) 20 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 82 E3 
    111 
    112 
    113 
    114 COM1 Write(hex): 19(Bytes)60 01 01 01 00 41 00 02 00 05 01 01 00 00 00 00 00 27 D4     //01,00 01,00 02,get Firmware version 
    115 COM1 Read(hex): 19(Bytes) 20 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 82 E3 
    116 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    117 COM1 Read(hex): 19(Bytes) E0 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 8B 08    //response 
    118 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    119 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 B7 58 
    120 
    121 
    122  
    123 COM1 Write(hex): 19(Bytes)60 02 01 01 00 41 00 03 00 05 01 01 00 00 00 00 00 13 C5     //01,00 01,00 03,get Serial number 
    124 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 B7 58 
    125 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    126 COM1 Read(hex): 19(Bytes) E0 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 C4 3C    //response 
    127 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    128 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C
    129 
    130  
    131  
    132 COM1 Write(hex): 19(Bytes)60 03 04 01 00 42 01 05 00 01 01 01 00 00 00 00 00 94 20    //04,00 01,00 05,set 01 to MACID(DeviceNet address)
    133 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C 
    134 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    135 COM1 Read(hex): 19(Bytes) A0 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 10 0D 
    136 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    137 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C 
    138 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    139 COM1 Read(hex): 19(Bytes) E0 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 7C C9    //response OK 
    140 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
    141 COM1 Read(hex): 19(Bytes) 20 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 40 99 
    142 
    143 
    144 
    145 COM1 Write(hex): 19(Bytes)60 04 04 02 00 42 01 05 00 02 01 01 00 00 00 00 00 B0 21    //04,00 02,00 05,set 02 to Baudrate value(500K) 
    146 COM1 Read(hex): 19(Bytes) 20 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 40 99 
    147 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    148 COM1 Read(hex): 19(Bytes) A0 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 A8 F8 
    149 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    150 COM1 Read(hex): 19(Bytes) 60 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 A5 E9    //response OK 
    151 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    152 COM1 Read(hex): 19(Bytes) A0 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 99 B9
    153 
    154 
    155  
    156 COM1 Write(hex): 19(Bytes)E0 05 01 01 00 42 01 05 00 01 01 01 00 00 00 00 00 DD 07     //set 01 to attr 05 inst 1 of Anybus object,indicate Setup complete 
    157 COM1 Read(hex): 19(Bytes) A0 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 99 B9 
    158 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 
    159 COM1 Read(hex): 19(Bytes) 60 05 01 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 35 EE    //response OK  
    160 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 
    161 COM1 Read(hex): 19(Bytes) A0 05 01 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 09 BE 

     

  • 相关阅读:
    [51Nod] 配对
    [Poj] Roads in the North
    【Java学习笔记之二十六】深入理解Java匿名内部类
    【Java学习笔记之二十五】初步认知Java内部类
    【Java学习笔记之二十四】对Java多态性的一点理解
    【Java学习笔记之二十三】instanceof运算符的用法小结
    【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析
    图论--拓扑排序模板
    hdu 5384 AC自动机
    java大数
  • 原文地址:https://www.cnblogs.com/skl374199080/p/4107469.html
Copyright © 2020-2023  润新知