root/ResearchApps/PHY/WARPLAB/WARPLab_SISO_MIMO2x2/M_Code/warplab_siso_example_TxRxTwoWay_WorkshopExercise.m

Revision 839, 22.4 kB (checked in by MelissaDuarte, 4 months ago)

WARPLab Release 02 April 09 2008. Release for 2x2 MIMO and improved SISO. Matlab code is modified to support MIMO. SISO now supports continuous transmission. There is one bitstream for MIMO and one bitstream for SISO. The xps project for MIMO and SISO is different but the M code is the same (The 'warplab_' functions are the same, the argument input to the functions is the only thing that changes from SISO to MIMO).

Line 
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2% Two-Way transmission and reception of data using Warplab (SISO configuration)
3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4% To run this code the boards must be programmed with the
5% warplab_siso_v02.bit bitstream
6
7% Use Warplab for two-way communication between two nodes. First node A
8% will transmit to node B and then node B will transmit to node A.
9
10% The specific steps implemented in this script are the following
11
12% 0. Initializaton and definition of parameters
13% 1. Generate the vector of samples that node A will transmit to node B and
14% the vector of samples that node B will transmit to node A, then download
15% the samples to the Warp boards (Sample Frequency is 40MHz)
16% 2. Prepare boards for transmission and reception from node A to node B
17% and send trigger to start transmission and reception (trigger is the SYNC
18% packet)
19% 3. Disable the radios
20% 4. Prepare boards for transmission and reception from node B to node A
21% and send trigger to start transmission and reception (trigger is the SYNC
22% packet)
23% 5. Disable the radios
24% 6. Read the received samples from the Warp boards
25% 7. Reset the boards and close sockets
26% 8. Plot the transmitted and received data
27
28% In this lab exercise you will write a matlab script that implements the
29% nine steps above. Part of the code is provided, some part of the code you
30% will write. Read the code below and fill in with your code wherever you
31% are asked to do so.
32
33% NOTE: To avoid conflict with other groups using the boards, please test
34% the code you write in this script in any of the following three ways:
35%
36% Option 1. Run this script from matlab's Command Window by entering the
37% name of the script (enter warplab_example_TxRx_WorkshopExercise in
38% matlab's Command Window).
39% Option 2. In the menu bar go to Debug and select Run. If there
40% are errors in the code, error messages will appear in the Command Window.
41% Option 3. Press F5. If the are errors in the code, error messages will
42% appear in the Command Window.
43%
44% DO NOT USE the Evaluate selection option and DO NOT run the script by
45% sections. To test any change, always run the whole script by following
46% any of the three options above.
47
48try,
49%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50% Code to avoid conflict between users, only needed for the workshop, go to
51% step 0 below to start the initialization and definition of parameters
52%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53fid = fopen('c:\boards_lock.txt');
54
55if(fid > -1)
56    fclose('all');
57        errordlg('Boards already in use - Please try again!');
58        return;
59end
60
61!echo > c:\boards_lock.txt
62
63
64%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
65% 0. Initializaton and definition of parameters
66%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67%Load some global definitions (packet types, etc.)
68warplab_defines
69
70% Create Socket handles and intialize nodes
71[socketHandles, packetNum] = warplab_initialize;
72
73%Separate the socket handles for easier access
74% The first socket handle is always the magic SYNC
75% The rest can be arranged in any combination of Tx and Rx
76udp_Sync = socketHandles(1);
77udp_nodeA = socketHandles(2);
78udp_nodeB = socketHandles(3);
79
80% Define the warplab options (parameters)
81CaptOffset = 1000; %Number of noise samples per Rx capture; in [0:2^14]
82TxLength = 2^14-1000; %Length of transmission; in [0:2^14-CaptOffset]
83TransMode = 0; %Transmission mode; in [0:1]
84               % 0: Single Transmission
85               % 1: Continuous Transmission. Tx board will continue
86               % transmitting the vector of samples until the user manually
87               % disables the transmitter.
88CarrierChannel = 8; % Channel in the 2.4 GHz band. In [1:14]
89TxGainBB = 3; %Tx Baseband Gain in [0:3]
90TxGainRF = 40; %Tx RF Gain in [0:63]
91RxGainBB = 15; %Rx Baseband Gain in [0:31]
92RxGainRF = 1; %Rx RF Gain in [1:3]
93
94% Define the options vector; the order of options is set by the FPGA's code
95% (C code)
96optionsVector = [CaptOffset TxLength-1 TransMode CarrierChannel (RxGainBB + RxGainRF*2^16) (TxGainRF + TxGainBB*2^16)];
97% Send options vector to the nodes
98warplab_setOptions(socketHandles,optionsVector);
99
100%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
101% 1. Generate the vector of samples that node A will transmit to node B and
102% the vector of samples that node B will transmit to node A, then download
103% the samples to the Warp boards (Sample Frequency is 40MHz)
104%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
105% Create time vector.
106t = 0:(1/40e6):TxLength/40e6 - 1/40e6;
107
108%-------------------------------------------------------------------------%
109% USER CODE HERE
110
111% Create a signal to transmit from node A to node B.
112% The signal must be a row vector. The Signal is a function of the time
113% vector 't'. The signal can be real or complex, the only constraint is
114% that the amplitude of the real part must be in [-1:1] and the amplitude
115% of the imaginary part must be in [-1:1].
116
117% Store the signal to transmit in a variable called
118% TxDataAB (TxDataAB = your signal from node A to node B)
119
120%-------------------------------------------------------------------------%
121
122%-------------------------------------------------------------------------%
123% USER CODE HERE
124
125% Use the 'warplab_writeSMWO' function to download to node A the samples to
126% be transmitted from node A to B ('TxDataAB' vector). The
127% 'warplab_writeSMWO' function has been used in all the previous exercises.
128
129% Hints:
130
131% 1. The first argument of the 'warplab_writeSMWO' function identifies the
132% node to which samples will be downloaded to. The handle for node A is
133% 'udp_nodeA' so use 'udp_nodeA' as the first argument.
134
135% 2. The second argument of the 'warplab_writeSMWO' function is the
136% vector of samples to be downloaded, which in this case is the 'TxDataAB'
137% vector.
138
139% 3. The third argument of 'warplab_writeSMWO' is RADIO2_TXDATA,
140% RADIO2_TXDATA is defined in 'warplab_defines'. RADIO2_TXDATA can be
141% understood as an id that identifies the transmitter buffer.
142
143% 4. In sumary, the first argument of the 'warplab_writeSMWO' identifies
144% the node and the third argument identifies which buffer in the node will
145% the samples be downloaded to. The second argument is the vector of
146% samples to download.
147
148%-------------------------------------------------------------------------%
149
150%-------------------------------------------------------------------------%
151% USER CODE HERE
152
153% Create a signal to transmit from node B to node A.
154% The signal must be a row vector. The Signal is a function of the time
155% vector 't'. The signal can be real or complex, the only constraint is
156% that the amplitude of the real part must be in [-1:1] and the amplitude
157% of the imaginary part must be in [-1:1].
158
159% Store the signal to transmit in a variable called
160% TxDataBA (TxDataBA = your signal from node B to node A)
161
162%-------------------------------------------------------------------------%
163
164%-------------------------------------------------------------------------%
165% USER CODE HERE
166
167% Use the 'warplab_writeSMWO' function to download to node B the samples to
168% be transmitted from node B to A ('TxDataBA' vector). The
169% 'warplab_writeSMWO' function has been used in all the previous exercises.
170
171% Hints:
172
173% 1. The first argument of the 'warplab_writeSMWO' function identifies the
174% node to which samples will be downloaded to. The handle for node B is
175% 'udp_nodeB' so use 'udp_nodeB' as the first argument.
176
177% 2. The second argument of the 'warplab_writeSMWO' function is the
178% vector of samples to be downloaded, which in this case is the 'TxDataBA'
179% vector.
180
181% 3. The third argument of 'warplab_writeSMWO' is RADIO2_TXDATA,
182% RADIO2_TXDATA is defined in 'warplab_defines'. RADIO2_TXDATA can be
183% understood as an id that identifies the transmitter buffer.
184
185% 4. In sumary, the first argument of the 'warplab_writeSMWO' identifies
186% the node and the third argument identifies which buffer in the node will
187% the samples be downloaded to. The second argument is the vector of
188% samples to download.
189
190%-------------------------------------------------------------------------%
191
192%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
193% 2. Prepare boards for transmission and reception from node A to node B
194% and send trigger to start transmission and reception (trigger is the SYNC
195% packet)
196%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
197
198%-------------------------------------------------------------------------%
199% USER CODE HERE
200
201% Enable the transmitter radio path in node A by sending the RADIO2_TXEN
202% command to node A using the 'warplab_sendCmd' function. This function has
203% been used in all the previous exercises.
204
205% Hints:
206
207% 1. The first argument of the 'warplab_sendCmd' function identifies the
208% node to which the command will be sent. The handle for node A is
209% 'udp_nodeA' so use 'udp_nodeA' as the first argument.
210
211% 2. The second argument of the 'warplab_sendCmd' function identifies the
212% instruction or command to be sent. In this case, the command to send is
213% the RADIO2_TXEN command defined in 'warplab_defines'.
214
215% 3. The third argument of the 'warplab_sendCmd' command is a field that
216% is not used at the moment, it may be used in future versions of WARPLab
217% to keep track of packets. Use 'packetNum' as the third argument of the
218% 'warplab_sendCmd' command.
219
220%-------------------------------------------------------------------------%
221
222%-------------------------------------------------------------------------%
223% USER CODE HERE
224
225% Enable the receiver radio path in node B by sending the RADIO2_RXEN
226% command to node B using the 'warplab_sendCmd' function. This function has
227% been used in all the previous exercises.
228
229% Hints:
230
231% 1. The first argument of the 'warplab_sendCmd' function identifies the
232% node to which the command will be sent. The handle for node B is
233% 'udp_nodeB' so use 'udp_nodeB' as the first argument.
234
235% 2. The second argument of the 'warplab_sendCmd' function identifies the
236% instruction or command to be sent. In this case, the command to send is
237% the RADIO2_RXEN command defined in 'warplab_defines'.
238
239% 3. The third argument of the 'warplab_sendCmd' command is a field that
240% is not used at the moment, it may be used in future versions of WARPLab
241% to keep track of packets. Use 'packetNum' as the third argument of the
242% 'warplab_sendCmd' command.
243
244%-------------------------------------------------------------------------%
245
246%-------------------------------------------------------------------------%
247% USER CODE HERE
248
249% Prime transmitter state machine in node A by sending the TX_START command
250% to node A using the 'warplab_sendCmd' function. This function has
251% been used in all the previous exercises and it is described in the Hints
252% above.
253
254% Node A will start waiting for the SYNC packet as soon as it receives the
255% TX_START command. Transmission from node A will be triggered when node A
256% receives the SYNC packet.
257
258%-------------------------------------------------------------------------%
259
260%-------------------------------------------------------------------------%
261% USER CODE HERE
262
263% Prime receiver state machine in node B by sending the RX_START command
264% to node B using the 'warplab_sendCmd' function. This function has
265% been used in all the previous exercises and it is described in the Hints
266% above.
267
268% Node B will start waiting for the SYNC packet as soon as it receives the
269% RX_START command. Capture on node B will be triggered when node B
270% receives the SYNC packet.
271
272%-------------------------------------------------------------------------%
273
274% Send the SYNC packet
275warplab_sendSync(udp_Sync)
276
277%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
278% 3. Disable the radios
279%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
280
281%-------------------------------------------------------------------------%
282% USER CODE HERE
283
284% Disable the receiver radio path in node B by sending the RADIO2_RXDIS
285% command to node B using the 'warplab_sendCmd' function. This function has
286% been used in all the previous exercises and it is described in the Hints
287% above.
288
289%-------------------------------------------------------------------------%
290
291%-------------------------------------------------------------------------%
292% USER CODE HERE
293
294% Disable the transmitter radio path in node A by sending the RADIO2_TXDIS
295% command to node A using the 'warplab_sendCmd' function. This function has
296% been used in all the previous exercises and it is described in the Hints
297% above.
298
299%-------------------------------------------------------------------------%
300
301%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
302% 4. Prepare boards for transmission and reception from node B to node A
303% and send trigger to start transmission and reception (trigger is the SYNC
304% packet)
305%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
306
307%-------------------------------------------------------------------------%
308% USER CODE HERE
309
310% Enable the transmitter radio path in node B by sending the RADIO2_TXEN
311% command to node B using the 'warplab_sendCmd' function. This function has
312% been used in all the previous exercises.
313
314%-------------------------------------------------------------------------%
315
316%-------------------------------------------------------------------------%
317% USER CODE HERE
318
319% Enable the receiver radio path in node A by sending the RADIO2_RXEN
320% command to node A using the 'warplab_sendCmd' function. This function has
321% been used in all the previous exercises.
322
323%-------------------------------------------------------------------------%
324
325%-------------------------------------------------------------------------%
326% USER CODE HERE
327
328% Prime transmitter state machine in node B by sending the TX_START command
329% to node B using the 'warplab_sendCmd' function. This function has
330% been used in all the previous exercises and it is described in the Hints
331% above.
332
333% Node B will start waiting for the SYNC packet as soon as it receives the
334% TX_START command. Transmission from node B will be triggered when node B
335% receives the SYNC packet.
336
337%-------------------------------------------------------------------------%
338
339%-------------------------------------------------------------------------%
340% USER CODE HERE
341
342% Prime receiver state machine in node A by sending the RX_START command
343% to node A using the 'warplab_sendCmd' function. This function has
344% been used in all the previous exercises and it is described in the Hints
345% above.
346
347% Node A will start waiting for the SYNC packet as soon as it receives the
348% RX_START command. Capture on node A will be triggered when node A
349% receives the SYNC packet.
350
351%-------------------------------------------------------------------------%
352
353% Send the SYNC packet
354warplab_sendSync(udp_Sync)
355
356%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
357% 5. Disable the radios
358%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359
360%-------------------------------------------------------------------------%
361% USER CODE HERE
362
363% Disable the receiver radio path in node A by sending the RADIO2_RXDIS
364% command to node A using the 'warplab_sendCmd' function. This function has
365% been used in all the previous exercises and it is described in the Hints
366% above.
367
368%-------------------------------------------------------------------------%
369
370%-------------------------------------------------------------------------%
371% USER CODE HERE
372
373% Disable the transmitter radio path in node B by sending the RADIO2_TXDIS
374% command to node B using the 'warplab_sendCmd' function. This function has
375% been used in all the previous exercises and it is described in the Hints
376% above.
377
378%-------------------------------------------------------------------------%
379
380%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
381% 6. Read the received samples from the Warp boards
382%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
383
384%-------------------------------------------------------------------------%
385% USER CODE HERE
386
387% Read the samples received at node B (samples sent from A to B) using the
388% 'warplab_readSMRO' function. This function was used in the
389% previous exercises. Store the samples in a variable named 'RawRxDataAB'
390
391% Hints:
392
393% 1. The first argument of the 'warplab_readSMRO' function identifies the
394% node from which samples will be read. The handle for node B is
395% 'udp_nodeB' so use 'udp_nodeB' as the first argument.
396
397% 2. The second argument of 'warplab_readSMRO' is RADIO2_RXDATA,
398% RADIO2_RXDATA is defined in 'warplab_defines'. RADIO2_RXDATA can be
399% understood as an id that identifies the receiver buffer.
400
401% 3. The third argument of the 'warplab_readSMRO' function is the number of
402% samples to read. For this exercise, the third argument of the 'warplab_readSMRO'
403% function is equal to 'TxLength+CaptOffset'
404
405% 4. In sumary, the first argument of the 'warplab_readSMWO' identifies
406% the node and the second argument identifies which buffer in the node will
407% be read. The third argument is the number of samples to read.
408
409%-------------------------------------------------------------------------%
410
411% Process the received samples to obtain meaningful data
412[RxDataAB,RxOTRAB] = warplab_processRawRxData(RawRxDataAB);
413% Read stored RSSI data corresponding to A to B transmission
414[RawRSSIDataAB] = warplab_readSMRO(udp_nodeB, RADIO2_RSSIDATA, (TxLength+CaptOffset)/8);
415% Procecss Raw RSSI data to obtain meningful RSSI values
416[RxRSSIAB] = warplab_processRawRSSIData(RawRSSIDataAB);
417
418%-------------------------------------------------------------------------%
419% USER CODE HERE
420
421% Read the samples received at node A (samples sent from B to A) using the
422% 'warplab_readSMRO' function. This function was used in the two
423% previous exercises. Store the samples in a variable named 'RawRxDataBA'
424
425% Hints:
426
427% 1. The first argument of the 'warplab_readSMRO' function identifies the
428% node from which samples will be read. The handle for node A is
429% 'udp_nodeA' so use 'udp_nodeA' as the first argument.
430
431% 2. The second argument of 'warplab_readSMRO' is RADIO2_RXDATA,
432% RADIO2_RXDATA is defined in 'warplab_defines'. RADIO2_RXDATA can be
433% understood as an id that identifies the receiver buffer.
434
435% 3. The third argument of the 'warplab_readSMRO' function is the number of
436% samples to read. For this exercise, the third argument of the 'warplab_readSMRO'
437% function is equal to 'TxLength+CaptOffset'
438
439% 4. In sumary, the first argument of the 'warplab_readSMWO' identifies
440% the node and the second argument identifies which buffer in the node will
441% be read. The third argument is the number of samples to read.
442
443%-------------------------------------------------------------------------%
444
445% Process the received samples to obtain meaningful data
446[RxDataBA,RxOTRBA] = warplab_processRawRxData(RawRxDataBA);
447% Read stored RSSI data corresponding to B to A transmission
448[RawRSSIDataBA] = warplab_readSMRO(udp_nodeA, RADIO2_RSSIDATA, (TxLength+CaptOffset)/8);
449% Procecss Raw RSSI data to obtain meningful RSSI values
450[RxRSSIBA] = warplab_processRawRSSIData(RawRSSIDataBA);
451
452%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
453% 7. Reset the boards and close sockets
454%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
455
456%-------------------------------------------------------------------------%
457% USER CODE HERE
458
459% Reset node A by sending the RX_DONEREADING command to node A using the
460% 'warplab_sendCmd' function. When the node receives the RX_DONEREADING
461% command it knows that the samples in the receiver buffer have been read
462% and sets the node ready for a new capture.
463
464%-------------------------------------------------------------------------%
465
466%-------------------------------------------------------------------------%
467% USER CODE HERE
468
469% Reset node B by sending the RX_DONEREADING command to node B using the
470% 'warplab_sendCmd' function. When the node receives the RX_DONEREADING
471% command it knows that the samples in the receiver buffer have been read
472% and sets the node ready for a new capture. 
473
474%-------------------------------------------------------------------------%
475
476% Close sockets
477pnet('closeall');
478
479%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
480% 5. Plot the transmitted and received data
481%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
482% Plot data from A to B transmissio
483figure;
484subplot(2,2,1);
485plot(real(TxDataAB));
486title('Tx I A to B');
487xlabel('n (samples)'); ylabel('Amplitude');
488axis([0 2^14 -1 1]); % Set axis ranges.
489subplot(2,2,2);
490plot(imag(TxDataAB));
491title('Tx Q A to B');
492xlabel('n (samples)'); ylabel('Amplitude');
493axis([0 2^14 -1 1]); % Set axis ranges.
494subplot(2,2,3);
495plot(real(RxDataAB));
496title('Rx I A to B');
497xlabel('n (samples)'); ylabel('Amplitude');
498axis([0 2^14 -1 1]); % Set axis ranges.
499subplot(2,2,4);
500plot(imag(RxDataAB));
501title('Rx Q A to B');
502xlabel('n (samples)'); ylabel('Amplitude');
503axis([0 2^14 -1 1]); % Set axis ranges.
504
505% Plot data from B to A transmission
506figure;
507subplot(2,2,1);
508plot(real(TxDataBA));
509title('Tx I B to A');
510xlabel('n (samples)'); ylabel('Amplitude');
511axis([0 2^14 -1 1]); % Set axis ranges.
512subplot(2,2,2);
513plot(imag(TxDataBA));
514title('Tx Q B to A');
515xlabel('n (samples)'); ylabel('Amplitude');
516axis([0 2^14 -1 1]); % Set axis ranges.
517subplot(2,2,3);
518plot(real(RxDataBA));
519title('Rx I B to A');
520xlabel('n (samples)'); ylabel('Amplitude');
521axis([0 2^14 -1 1]); % Set axis ranges.
522subplot(2,2,4);
523plot(imag(RxDataBA));
524title('Rx Q B to A');
525xlabel('n (samples)'); ylabel('Amplitude');
526axis([0 2^14 -1 1]); % Set axis ranges.
527
528%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
529% Code to avoid conflict between users, only needed for the workshop
530%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
531pnet('closeall');
532!del c:\boards_lock.txt
533catch,
534% Close sockets
535pnet('closeall');
536!del c:\boards_lock.txt
537lasterr
538end
Note: See TracBrowser for help on using the browser.