用java做了一个对路由器进行自动配置的程序,用串口连接至设备进行读数据和写入命令,已达到对其进行维护的目的
一切准备都已经做好,但程序运行时读不到路由器回传的数据,将windows自带的超级终端连接到路由器后关闭超级终端,再运行程序后就能读到路由器传回来的数据了,这是怎么一回事?

解决方案 »

  1.   

    好不容易有个回复,竟然是个广告...>_<
      

  2.   

    做串口开发,最好找一个串口监控程序,监控串口和你的程序直接的数据,我做串口开发用用AccessPort工具对串口进行监控,你可以把监控打开,然后比较你的程序调用时的数据和用window工具调用时的数据有什么区别,相信仔细一点能找到问题的
      

  3.   

    这是我程序打开串口时的数据监控
    0       0.11995044 java.exe IRP_MJ_CREATE Serial2 SUCCESS Options: Open NoBuffer
    1 0.00000419 java.exe IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:0
    2 0.00000391 java.exe IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR ERR 
    3 0.00000279 java.exe IOCTL_SERIAL_CONFIG_SIZE Serial2 SUCCESS Size: 0
    4 0.00000223 java.exe IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    5 0.00000251 java.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    6 0.00000223 java.exe IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    7 0.00000251 java.exe IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    8 0.00000223 java.exe IOCTL_SERIAL_GET_PROPERTIES Serial2 SUCCESS
    9 0.00000196 java.exe IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    10 0.00000223 java.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    11 0.00000196 java.exe IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    12 0.00000196 java.exe IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    13 0.00342446 java.exe IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
    14 0.00295401 java.exe IOCTL_SERIAL_SET_RTS Serial2 SUCCESS
    15 0.00296993 java.exe IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
    16 0.00398067 java.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    17 0.00298641 java.exe IOCTL_SERIAL_SET_CHAR Serial2 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
    18 0.00701151 java.exe IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:40 XonLimit:16 XoffLimit:1024 这是超级终端打开串口的监控数据
    0 0.12113690 hypertrm.exe IRP_MJ_CREATE Serial2 SUCCESS Options: Open 
    1 0.00000950 hypertrm.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial2 SUCCESS InSize: 8192 OutSize: 8192
    2 0.00000279 hypertrm.exe IOCTL_SERIAL_CONFIG_SIZE Serial2 SUCCESS Size: 0
    3 0.00000279 hypertrm.exe IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    4 0.00000307 hypertrm.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    5 0.00000279 hypertrm.exe IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    6 0.00000279 hypertrm.exe IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    7 0.00000251 hypertrm.exe IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    8 0.00000251 hypertrm.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    9 0.00000251 hypertrm.exe IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    10 0.00000251 hypertrm.exe IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    11 0.00370550 hypertrm.exe IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
    12 0.00297552 hypertrm.exe IOCTL_SERIAL_SET_RTS Serial2 SUCCESS
    13 0.00304648 hypertrm.exe IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
    14 0.00387619 hypertrm.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    15 0.00297580 hypertrm.exe IOCTL_SERIAL_SET_CHAR Serial2 SUCCESS EOF:0 ERR:0 BRK:0 EVT:71 XON:11 XOFF:13
    16 0.00698916 hypertrm.exe IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:80000001 Replace:80000040 XonLimit:80 XoffLimit:200
    17 0.00000475 hypertrm.exe IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:10 RM:0 RC:0 WM:0 WC:5000
    18 0.00000447 hypertrm.exe IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RLSD ERR 
    19 6.02467297 hypertrm.exe IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS对串口实在是不了解,还请高手解答...
      

  4.   

    找到问题所在了,应该是这一行
    超级终端的设置是16 0.00698916 hypertrm.exe IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:80000001 Replace:80000040 XonLimit:80 XoffLimit:200 
    而程序的设置是18 0.00701151 java.exe IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:40 XonLimit:16 XoffLimit:1024 
    java里面如何设置IOCTL_SERIAL_SET_HANDFLOW这个东东?在javax.comm包里找了半天,好像没有..