Hello, about three weeks ago I started working with your BacNet stack,
maybe I can make my contribution to the development of technology,
if so, I'll be happy.(Sorry for my English)
Here are some notes that I made in the process of work and integration,
perhaps some of them arise from others and their solution will help
a faster understanding of the technology.
1) I did not immediately find the required FAQ, which I did not
know about this document - and where there was a general answer
to some questions. I found it only after a week and a half of work and
was surprised that there is no reference to it in the description
of the project - on his page in sourceforge (http://bacnet.sourceforge.net/)
2) It's strange that there is no realization of the example with the
self-write/read (yes, I read Support Request stickets on your
discussion page, and I know about the A-15 to Q-15 question there
and the link you give in FAQ) tried all three options and it did
not help ... Probably the most obvious way of self-write/read from
the device itself is to use the example ./baswp <self-id>
(The consequence of the previous version was that I had to write my
own read-write bike into myself, through a common piece of memory)
3) There is no seemingly obvious example of a smart sensor, for example,
a temperature that could write a value and a server that was already
running would give these data to those who are interested ...
(examples have a BacNet server, but not have BacNet device)
4) I did not find a way to stop the server correctly -
I can start it - but how can I stop it later?
5) In the process of working on my patch, it turned out that I can
not find the documentation and description of working with functions
and the overall structure of the project code (not file project,
but logic in code) - it was especially insulting that the primitive
functions of writing and reading have not been described and so far
it is a mystery for me fill the structure of the
type BACNET_WRITE_PROPERTY_DATE, first tried to use the function
Device_Write_Properties () for the write in proprty, but then
it turned out that in the application_data field, not only the
data, but also some kind of "tag". Due to the lack of time
for the proceedings, I decided to use the functions below:
- Analog_Output_Present_Value_Network ()
- Binary_Input_Present_Value_Network ()
6) There is no general structure describing the device, with its
objects, objects are created separately in their modules (for
me it was unusual - therefore, those patterns that I applied
earlier did not work for this project)
7) Another surprise that was waiting for me is that the number of
objects created is categorized as a definite, inside each
module (not header),for example in demo/object/bv.c:
#define MAX_BINARY_VALUES 10
As a result:
I do not write this in order to just criticize the project - on the contrary,
I would like to make this project better, because it is very useful.
What I can offer at the moment based on my free time, to save time
for those who will use this project after me:
1) It is more specific to describe the documentation for your project
- describe the structure of the project code
- describe the work with the library and the basic functions of
initialization, writing / reading, etc.
2) Check out the patch I wrote (utility, plus a sample server patch)
that allows you to self-write/read from a device with a running server
through shared memory:
- write to server from another app
- read from server to another app
- stop the server correctly from another hub
- TODO: suspend its operation for a while
(when stopped, the processing of BuckNet messages stops)
- TODO: and then start from a pause
Maybe I took the wrong path - then please tell me what I'm wrong about,
because I want to benefit and still insert the correct and approved
example for you to write to yourself, which is not enough to fully
use the stack if necessary.
Anonymous