I've attached a bit of test I code I wrote to communicate with the RN4020 on a board I developed. It is very basic but you should be able to see what I've done and build on it or use it to help diagnose your issue. It requires the BLE2 library. Make sure to download the latest version (v1.14) as the earlier version was missing a few things.
The app sends a 2 byte command to the RN4020 which converts it to serial and sends it to a PIC. The PIC does some stuff and sends a response. Nothing fancy. The send code is:
Dim D(2) As Byte
D(0) = 70 ' F
D(1) = 63 ' ?
manager.WriteData(MLDP_PRIVATE_SERVICE, MLDP_DATA_PRIVATE_CHAR, D)
manager.SetNotify(MLDP_PRIVATE_SERVICE, MLDP_DATA_PRIVATE_CHAR, True)
Which sends "F?" to the RN4020. Once the PIC responds, the DataAvailable sub is called which build the response. It will be better explained by looking at the code.