Can't set tx_gain and examine result in rx_ascii_art_dft

I try to change code from benchmark-rate.cpp to a transmitter program,
and examine the result of transmission by rx_ascii_art_dft.cpp

I have set up newest version of uhd/gnuradio with usrp2

I can find them and probe them and execute the benchmark program
correctly.

But I get a problem when I try to start edit my own program.
(actually I try to change it from benchmark-rate)

-------------- in TX part -----------------------
What I change as shown follow :
double TX_RATE = 8000000;
double TX_FREQ = 2450000000;
double TX_GAIN = 5;
usrp->set_tx_rate(TX_RATE);
usrp->set_tx_freq(TX_FREQ);
usrp->set_tx_gain(TX_GAIN);

boost::this_thread::sleep(boost::posix_time::seconds(2));
std::cout<<“final setting = (rate,freq,gain) \n =
(”<get_tx_rate()<<", “<get_tx_freq()<<”,
“<get_tx_gain()<<”)"<<std::endl;

-------------- in RX part ------------------------
and examine the result by running
./rx_ascii_art_dft --rate 8000000 --freq 2450000000 --gain 50

As a result, the rx shows nothing(I think it will show a peak in freq
2.45GHz but it does not /_)

On the other side, the dump info in tx telling me that usrp-get_tx_gain
returns value of 0!!!

It is so strange~!!

Can anyone help me to figure it out~?
It is my first time using UHD and gnuradio…
I have spent a whole week to set them up, but it is still so hard to me
to write program on it T_T~

By the way, the dump result of tx is :
UHD Warning:
The hardware does not support the requested TX sample rate:
Target sample rate: 8.000000 MSps
Actual sample rate: 7.692308 MSps
final setting = (rate,freq,gain)
= (7.69231e+06, 2.45e+09, 0)
Testing transmit rate 7.692308 Msps

and it remains send samples as benchmark-rate.cpp do until the timeout
and interrupt.

Do anyone have any idea?~

Thanks