由于軟件的需求,CH395內(nèi)置協(xié)議棧4個socket不夠用,現(xiàn)在改用外部協(xié)議棧keil的RL_TCPnet, 主控是M3 ARM--LPC1788,CH395的socket 0工作在macraw模式。 CH395作為TCP server,PC上用客戶端來連接。 現(xiàn)在發(fā)現(xiàn)的問題是我用網(wǎng)線跟一臺PC機(jī)直連,TCP連接正常,收發(fā)正常。但是在這臺PC機(jī)和板子間用一個交換機(jī)連在一起的時候就無法連接了。通過協(xié)議棧的debug信息可以看到當(dāng)PC上客戶端發(fā)起TCP連接的時候,板子能收到ARP報文,且解析正常。通過把協(xié)議棧響應(yīng)的報文打印出來發(fā)現(xiàn)跟之前直連的時候是一樣的(這里打印是在協(xié)議棧發(fā)送驅(qū)動里將數(shù)據(jù)通過SPI發(fā)送給CH395之前),PC端我用網(wǎng)卡抓包軟件也沒發(fā)現(xiàn)有ARP響應(yīng)報文到達(dá)PC的網(wǎng)卡。 我換了一臺PC機(jī)直連,發(fā)現(xiàn)也無法連接,現(xiàn)象跟用交換機(jī)一樣。
這個問題找了好幾天了,一直沒找到原因,為什么在一臺機(jī)子上是可以連接,換了機(jī)子和用交換機(jī)都不行了。 我能確認(rèn)的是協(xié)議棧生成了ARP響應(yīng)報文后,確實調(diào)用了CH395SendData函數(shù),把數(shù)據(jù)發(fā)送給了CH395,但是CH395有沒有收到報文,有沒有發(fā)送出去我就不知道了。 請問有沒有辦法可以查詢CH395是否收到報文,且發(fā)送了報文??
或者這個問題大家有啥想法可以分享出來交流交流,讓我也有點啟發(fā)。謝謝