It sure looks to me like you're trying to read data from your task before starting any of them. Move your call to the read function to happen *after* starting your write, read, and counter tasks (still in that same order).
You may also need to do further config of your counter task to make it pulse multiple times instead of just once. In the LabVIEW API, we call DAQmx Timing to specify "Implicit Timing" (because the desired pulse freq & duty cycle determine the timing implicitly) and declare whether we want to generate a Finite or Continuous sequence of those pulses (and if Finite, how many).
-Kevin P
ALERT! LabVIEW's subscription-only policy came to an end (finally!). Unfortunately, pricing favors the captured and committed over new adopters -- so tread carefully.