Thank you for your kind help,
When I change the target z to current.z - 5, the drone successfully takes off. However without using bitmask 0x1000, it can take off as well. I am not quiet understand it's difference.
Anyway, the takeoff problem is solved, but land still bother me.
Are you in correct offboard mode. To do so you have to send a HEARTBEAT at 2Hz and a request to switch to offboard mode MAV_CMD_NAV_GUIDED_ENABLE.
And then you also need to arm the drone using MAV_CMD_COMPONENT_ARM_DISARM. These two command are 'long command' type.
I am using the example from c_uart_interface_example (https://github.com/mavlink/c_uart_interface_example68), and every thing (arm -> takeoff -> send set point stream at 4Hz) goes well in the HITL test by JMAVSIM, except landing (with bitmask (0x2000 | 0b110111000011) ).
When I set "target.x = current.x, target.y = current.y, target.z = current.z, and target.vx=target.vy=0 target.vz=0.5" the drone cannot land. When I change "target.z = 0.0", the drone flies down, but when the drone arrives at the lowest altitude there still exist horizontal drift which can be seen in the HITL test. This land is different from the LAND mode. When in LAND mode the drone land directly without drift near the ground.
I do not know whether the bitmasks need other configuration to work? (I am using firmware version 1.7.0)